Makefile覚書
毎回作るときに忘れるのでメモ。
変数
定義
変数を作るときは変数名 = 値
でよい。$(変数名)=としてはならない。
CXX = g++
参照
参照するときは$(変数名)
で参照
$(CXX) $< -o $@
自動変数
ターゲットの名前などを参照できる。
$@ : ターゲットファイル名 $% : ターゲットがアーカイブメンバだったときのターゲットメンバ名 $< : 最初の依存するファイルの名前 $? : ターゲットより新しいすべての依存するファイル名 $^ : すべての依存するファイルの名前 $+ : Makefileと同じ順番の依存するファイルの名前 $* : サフィックスを除いたターゲットの名前
一般規則
%.拡張子
で一般的な規則を記述可能。
%.o : %.c $(CC) -c $< -o $@
サフィックスルール
単に「.cファイルから.oファイルの拡張子に変換する」といったルールの場合は、以下のようにも書ける。
.c.o: $(CC) -c $< -o $@
ただし、これは互換性のために残された機能で、使うべきではない。
さらには、これは.SUFFIXES
変数に登録された拡張子しかサフィックスとして扱わない。
自前で登録するには、
#.SUFFIXES: ←空の.SUFFIXESを一旦定義することで既存のサフィックスを削除可能 .SUFFIXES: .c .o
暗黙のルール
Makefileには定義しなくてもデフォルトのルールがいくつか用意されている。例えば、
.c.o: $(CC) -c $< -o $@ $(CFLAGS) .cpp.o: $(CXX) -c $< -o $@ $(CXXFLAGS)
など。これらを無効にするには、
$ make -r
としてmakeする。
変数操作
wildcard
- ディレクトリ内のファイル検索
SRCS = $(wildcard *.c)
サフィックス置換
OBJS = $(SRCS:.c=.o) #または OBJS = $(patsubst %.c, %.o, $(SRCS))
addprefix
- 各語にプレフィックスをつける
OBJS = $(addprefix $(STAGEDIR)/,$(SRCS:.c=.o))
参考文献
GNU make 日本語訳(Coop編) - テキスト変形関数
CGIが動かないときにチェックしてほしいこと
「End of script output before headers」のエラーに遭遇したときの対処法。
ヘッダの出力
まずはエラーメッセージの内容をそのまま受け止める。
#!/usr/bin/python print "Content-Type: text/html\n\n" print "test"
Content-Typeのヘッダーは必須。
suexecの実行設定
suexecを使っている場合は、/var/log/secure
をチェックしてエラーが出てないか確認する。
パーミッション
実行ディレクトリのパーミッションは755じゃないとだめっぽい。
$ chmod 755 /var/www/cgi-bin
必ず。
android-x86 build memo
export LC_ALL=C
sudo ln -sf /usr/bin/python2 /usr/bin/python
sudo pip2 install mako
sudo pacman -S ninja dosfstools mtools syslinux
Ubuntu – Package Download Selection -- genisoimage_1.1.11-2ubuntu3_amd64.deb
ar xv [pkg]
tar zxvf [pkg].tar.gz
sudo cp -rva usr /
Xfceの細かい設定
スクロールしたときにアクティブウィンドウを切り替えない
Xfce で後ろのウィンドウを前面に出さずにスクロール | #Connect
「ウィンドウマネージャ(詳細)」→「アクセシビリティ」→「いずれかのマウスボタンが押されているときにウィンドウを全面に出す」チェックOFF
音量調節
sudo pacman -S pavucontrol
あとはXfceパネルにPulseAudio音量調節を追加する
電池残量をパネルに表示
「電源管理」→「システムトレイアイコン」オン
ZenBook Flip S (UX370UA)にArchLinuxを導入してみた
自分用メモ程度で。
手順
基本的には、以下の3つの記事を参考に。
Arch LinuxをUEFI + GPT環境にインストールする
ArchLinuxのインストール 1.5.yaourtのインストール編 - グレインの備忘録
ArchLinuxのインストール 2.GUI(xfce)&日本語環境構築編 - グレインの備忘録
注意点
デフォルトだとトラックパッドのジェスチャーが一部しか有効になっていない。 libinputが全て制御しているので、ヘルプを参考に/etc/X11/xorg.conf.d/30-touchpad.confを編集する。
libinput - ArchWiki libinput man page - xorg-x11-drv-libinput | ManKier
自分で作ったのはこんな感じ。
Section "InputClass" Identifier "touchpad" Driver "libinput" MatchIsTouchpad "on" Option "Tapping" "on" Option "ClickMethod" "clickfinger" Option "NaturalScrolling" "true" Option "ScrollMethod" "twofinger" EndSection
電源系はここに。
<2018年版>Android開発環境をLinux(ArchLinux)に導入
Android SDKなどの開発環境をLinuxにインストールする。
Deprecatedになってしまったコマンドラインツール群
「LinuxでAndroid SDKを使う!」となれば、コマンドでガリガリ開発できるとワクワクしている人もいるだろう。実際私もかなり楽しみにしていた。
しかしながら!!!コマンドツールはdeprecatedになってしまったのである!!!
deprecatedになっただけでなく、ビルド機能などもバッサリ削除されてしまった。
従って、コマンドラインのみでAndroid開発を行うのは実質不可能となってしまった。
「For manual SDK, AVD, and project management, please use Android Studio.」というのがGoogleの方針らしい。
仕方ないのでAndroid Studio
仕方がないのでIDEを使うほかない。全く悲しい限りだ。
では簡単にインストール方法を。
Android Studioのダウンロード
公式サイトからダウンロードする。
Android Studio と SDK ツールをダウンロードする | Android Studio
Android Studioのインストール
落としたzipを展開するだけ。ただし、必ず書き込み権限のある場所に展開すること。
$ unzip android-studio-ide-171.4443003-linux.zip -d ~/android/
ここでは~/androidに展開する。
初期設定
終わったら、~/android/android-studio/bin/studio.shを実行。すると、IDEが立ち上がる。
UIのスタイルやSDKのインストール先を聞かれるのでウィザードに従ってすすめる。
ここでは~/android/sdkにSDKをインストールした。
プロジェクトを作ってみる
終わると下のような画面が出る。
試しにプロジェクトを作ってみよう。「Start a new Android Project」を選択する。
とりあえず全てデフォルトで作ってみた。
ところが、いきなり下側にエラーが出ている。
自動でインストールされたSDKのAPI Versionが27なのに、指定されているバージョンが26であるのが原因の模様。
「app/build.gradle」を編集する。
以下のように「compileSdkVersion」と「targetSdkVersion」を「27」に変える。
さらに、忘れてはいけないのはビルドツールのバージョンをSDKバージョンと揃えることだ。
以下のように「buildToolsVersion」を「27.0.3」に、サポートライブラリのバージョンを「27.0.2」にする。
これでビルド(Make Project)してみると、特に失敗すること無く終わる。
試しに実行…ところが
試しに実行してみよう…と思うと、なんと「Run」ボタンがグレーアウトしてしまっている。
これは、GradleプロジェクトがAndroidStudioに認識されていないことが原因らしい。
右ペインから「Gradle」ウィンドウを開き、「Refresh all Gradle Project」(更新ボタン)を押す。
さらに、メニューの「Tools」→「Android」→「Sync Project with Gradle Files」を押す。
すると、Runボタンが押せるようになる。
AVDの作成も一苦労
実機がある場合はあとはUSB接続からのUSBデバッグ許可でデバッガなどが使えるようになる。
ここではエミュレーターを使ってみよう。
Runボタンを押すと「Select Deployment Target」というウィンドウが出てくるが、右下に「Create New Virtual Machine」というボタンがあるので押す。
ハードウェア、システムイメージは自分の必要に合わせて選択する。(NDKを利用する場合でもエミュレータはx86のもので構わない。)
最後が重要で、「Emulated Performance」を「Software - GLES 1.1」にしなければ動かないことがある。(当方ではHardwareにするとSEGVで落ちた。)
これでエミュレータを試しに起動してみると、エラーが出て動かない。
EventLogを見てみると、ドライバのロードに失敗している模様。
調べたら解決法があった。
これで起動するようになった。
まとめ
コマンドラインで開発できないのは残念だった上に、IDEを動かすにも何かと手間がかかったりと、すっかりAndroidStudioが嫌いになってしまった。 IDEを推進するならはじめからうまく動いてほしいものだ。(ここまでたどり着くのに2時間くらいかかった)
wineでフォントが汚い場合の対策
wineを入れたはいいものの、どうにもフォントが汚い。
アンチエイリアスがまるでかかっていないようだ。
スムージングの設定の問題?
スムージングが設定できてないのかと思って、やってみた。
しかし、全く効果はない。
Xftの問題?
調べたら、あるエントリに行き当たった。
WineHQ Forums • View topic - Font anti-aliasing does not work...
どうやら、xftの設定の一部を消せばいいらしい。
$ xrdb -query | grep -vE 'Xft\.(anti|hint|rgba)' | xrdb
これを実行したらフォントがきれいになった。理由はよくわからない。