是否可以在Makefile.am中设置此类标志?这将解决我在https://stackoverflow.com/questions/22617744/how-to-disable-the-runtime-checking-of-dynamic-libraries-if-they-are-not-used提出的问题。
答案 0 :(得分:2)
一些链接器可以选择在链接时忽略未解析的符号 - 只要您确定该库在 load 时可用。例如,对于GNU ld,有--unresolved-symbols
,其中像--unresolved-symbols=ignore-in-shared-libs
这样的选项可能是合适的。 OS X(Mach-O)链接器具有:-undefined <error|warning|suppress|dynamic_lookup>
运行程序时,动态链接器/加载程序必须解析所有符号。
这不应与dynamic loading工具混淆,后者要求您在运行时加载库,并获取给定函数名的函数指针或句柄。
对于程序'prog'
,您可以在prog_LDFLAGS
中向Makefile.am
添加额外的标记。
答案 1 :(得分:1)
如果您正在使用Autoconf和Automake,那么您应该能够在编译时传递链接器标志以使用以下内容:
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
使用上述变量,仍然允许您通过使用前一个方法传递它们来添加标记。