我是否真的需要指定库位置以与automake链接?

时间:2011-08-08 16:19:33

标签: linker autoconf automake

我正在开发一个多平台C计划。由于每台机器上的所有不同的编译器,库位置等,makefile变得非常复杂。我认为Autoconf/Automake是一个很好的解决方案,尽管我之前使用这些工具的经验很少。

我的Makefile.amLIBS=-lX11行,但链接失败并显示错误"/usr/bin/ld: cannot find -lX11"。我可以通过在"-L/usr/X11R6/lib/"的定义中添加LIBS来解决这个问题,但我真的需要这样做吗?当我运行./configure时,它会说:

checking for X... libraries /usr/X11R6/lib, headers /usr/X11R6/include

所以看起来Automake应该知道在哪里找到它。有没有办法可以在Makefile.am中引用其位置而无需对其进行硬编码,因为X11 libs将位于每台计算机上的不同位置?

1 个答案:

答案 0 :(得分:1)

你的Makefile.am不应该设置LIBS。如果需要链接库,configure.ac应包括对库的检查,配置脚本将相应地设置LIBS。此外,Makefile.am不应指定库的路径。应配置每个系统,以便预编译器可以找到标头,链接器可以找到库。如果未设置系统以便链接器可以找到库,则正确的解决方案是让用户在LDFLAGS中指定位置,而不是在Makefile.am中硬编码。 (例如,不应将-L / p / a / t / h添加到Makefile中,而应将LDFLAGS = -L / p / a / t / h添加到configure的调用中。)