Compilation 是否可以在Makefile.am而不是configure.ac中设置编译和链接标志?

Compilation 是否可以在Makefile.am而不是configure.ac中设置编译和链接标志?,compilation,linker,autotools,dynamic-linking,ldflags,Compilation,Linker,Autotools,Dynamic Linking,Ldflags,是否可以改为在Makefile.am中设置这样的标志?这将解决我在中提出的问题。一些链接器可以选择在链接时忽略未解析的符号-只要您确定库在加载时可用。e、 例如,有:--unresolved symbols,其中类似于:--unresolved symbols=ignore in shared libs的选项可能是合适的。OS X(Mach-O)链接器有:-未定义 运行程序时,所有符号必须由动态链接器/加载程序解析 这不应与功能混淆,后者要求您在运行时加载库,并获取给定函数名的函数指针或句柄 对

是否可以改为在Makefile.am中设置这样的标志?这将解决我在中提出的问题。

一些链接器可以选择在链接时忽略未解析的符号-只要您确定库在加载时可用。e、 例如,有:
--unresolved symbols
,其中类似于:
--unresolved symbols=ignore in shared libs
的选项可能是合适的。OS X(Mach-O)链接器有:
-未定义

运行程序时,所有符号必须由动态链接器/加载程序解析

这不应与功能混淆,后者要求您在运行时加载库,并获取给定函数名的函数指针或句柄


对于程序
'prog'
,您可以在
Makefile.am

中向
prog\u LDFLAGS
添加额外的标志,只要您确定库在加载时可用,某些链接器可以在链接时忽略未解析的符号。e、 例如,有:
--unresolved symbols
,其中类似于:
--unresolved symbols=ignore in shared libs
的选项可能是合适的。OS X(Mach-O)链接器有:
-未定义

运行程序时,所有符号必须由动态链接器/加载程序解析

这不应与功能混淆,后者要求您在运行时加载库,并获取给定函数名的函数指针或句柄


对于程序
'prog'
,您可以在
Makefile.am

中向
prog\u LDFLAGS
添加额外的标志,只要您确定库在加载时可用,某些链接器可以在链接时忽略未解析的符号。e、 例如,有:
--unresolved symbols
,其中类似于:
--unresolved symbols=ignore in shared libs
的选项可能是合适的。OS X(Mach-O)链接器有:
-未定义

运行程序时,所有符号必须由动态链接器/加载程序解析

这不应与功能混淆,后者要求您在运行时加载库,并获取给定函数名的函数指针或句柄


对于程序
'prog'
,您可以在
Makefile.am

中向
prog\u LDFLAGS
添加额外的标志,只要您确定库在加载时可用,某些链接器可以在链接时忽略未解析的符号。e、 例如,有:
--unresolved symbols
,其中类似于:
--unresolved symbols=ignore in shared libs
的选项可能是合适的。OS X(Mach-O)链接器有:
-未定义

运行程序时,所有符号必须由动态链接器/加载程序解析

这不应与功能混淆,后者要求您在运行时加载库,并获取给定函数名的函数指针或句柄


对于程序
'prog'
,您可以在
Makefile.am

中向
prog\u LDFLAGS
添加额外的标志,如果您使用的是Autoconf和Automake,那么您应该能够在编译时传入链接器标志,以便使用以下命令进行设置:

make LDFLAGS='-L/my/nonstandard/prefix/lib' target
此外,您还可以为CC、CFLAGS、CPP、CPPFLAGS和LIB执行此操作。例如:

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来添加标记。

如果您使用的是Autoconf和Automake,那么您应该能够在编译时通过以下方法传递链接器标记以进行make:

make LDFLAGS='-L/my/nonstandard/prefix/lib' target
此外,您还可以为CC、CFLAGS、CPP、CPPFLAGS和LIB执行此操作。例如:

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来添加标记。

如果您使用的是Autoconf和Automake,那么您应该能够在编译时通过以下方法传递链接器标记以进行make:

make LDFLAGS='-L/my/nonstandard/prefix/lib' target
此外,您还可以为CC、CFLAGS、CPP、CPPFLAGS和LIB执行此操作。例如:

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来添加标记。

如果您使用的是Autoconf和Automake,那么您应该能够在编译时通过以下方法传递链接器标记以进行make:

make LDFLAGS='-L/my/nonstandard/prefix/lib' target
此外,您还可以为CC、CFLAGS、CPP、CPPFLAGS和LIB执行此操作。例如:

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来添加标记。

AM_LIBS
不存在。prog_LDADD在似乎不存在的AM_LIBS的位置执行此操作。@DanielKO使用基本Makefile.AM,您是正确的,但是,只需在目标宏之前将行添加到Makefile.am中。
am_LIBS
不存在。prog_LDADD在似乎不存在的am_LIBS位置执行此操作。@DanielKO使用基本Makefile.am,您是对的,但是,只需在目标宏之前将行添加到Makefile.am中。
am_LIBS
不存在。prog_LDADD在似乎不存在的am_LIBS位置执行此操作。@DanielKO使用基本Makefile.am,您是对的,但是,只需将行添加到目标宏之前的Makefile.am中。
am_LIBS
不存在。prog_LDADD在似乎不存在的am_LIBS中执行此操作。@DanielKO使用基本Makefile.am,您是正确的,但是只需将行添加到目标宏之前的Makefile.am中即可。