代わりに Makefile.am でそのようなフラグを設定することは可能ですか? それは私がhttps://stackoverflow.com/questions/22617744/how-to-disable-the-runtime-checking-of-dynamic-libraries-if-they-are-not-usedで尋ねた問題を解決します。
2 に答える
一部のリンカーには、リンク時に未解決のシンボルを無視するオプションがあります - ライブラリがロード時に利用可能であることが確実である限り。たとえば、GNU ldの場合、: の--unresolved-symbolsようなオプション--unresolved-symbols=ignore-in-shared-libsが適切な場合があります。OS X (Mach-O) リンカには次のものがあります。-undefined <error|warning|suppress|dynamic_lookup>
プログラムを実行するとき、すべてのシンボルは動的リンカー/ローダーによって解決される必要があります。
これを、実行時にライブラリをロードし、関数ポインタまたは特定の関数名のハンドルを取得する必要がある動的ロード機能と混同しないでください。
プログラムの場合、 in に'prog'追加のフラグを追加できます。prog_LDFLAGSMakefile.am
Autoconf と Automake を使用している場合は、コンパイル時にリンカー フラグを渡して、次を使用して make できるはずです。
make LDFLAGS='-L/my/nonstandard/prefix/lib' target
さらに、CC、CFLAGS、CPP、CPPFLAGS、および LIBS に対してもこれを行うことができます。例えば:
make CC=gcc-4.2 \
LIBS='-lmylibrary -lhislib ../lib/libcustom.a' \
LDFLAGS='-L/opt/vend/lib' \
CPPFLAGS='-I../include' \
CFLAGS='-Wall' \
target
make ファイルでそれらを永続的にしたい場合は、それらを automake 変数に追加します。
AM_LIBS = -lmylibrary -lhislib ../lib/libcustom.a
AM_LDFLAGS = -L/opt/vend/lib
AM_CPPFLAGS = -I../include
AM_CFLAGS = -Wall
上記の変数を使用すると、前の方法を使用してフラグを make に渡すことでフラグを追加できます。