是否可以在 Makefile.am 中设置此类标志?这将解决我在https://stackoverflow.com/questions/22617744/how-to-disable-the-runtime-checking-of-dynamic-libraries-if-they-are-not-used提出的问题。
问问题
1443 次
2 回答
2
一些链接器可以选择在链接时忽略未解析的符号 - 只要您确定库在加载时可用。例如,对于GNU ld,有: --unresolved-symbols
,其中类似的选项--unresolved-symbols=ignore-in-shared-libs
可能是合适的。OS X (Mach-O) 链接器具有:-undefined <error|warning|suppress|dynamic_lookup>
运行程序时,所有符号都必须由动态链接器/加载器解析。
这不应该与动态加载工具相混淆,动态加载工具要求您在运行时加载库,并获取给定函数名称的函数指针或句柄。
对于该程序,您可以在 in 中'prog'
添加额外的标志。prog_LDFLAGS
Makefile.am
于 2014-03-24T19:48:56.340 回答
1
如果您使用 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
使用上面的变量,仍然允许您通过使用前面的方法传递它们来添加标志。
于 2014-03-24T20:02:11.023 回答