CentOS下的Autoconf和AutoMake(完善篇) 3

《实践篇》之后,由于需求不断修正,所以这篇是针对《实践篇》的一些完善。(以后内容会不定期增加完善)

1.不想链接到math的动态库,想连接到静态库
①使用命令ldd ./mysqrt可以看到链接到libm.so
②使用命令find / -name libm.a,找出静态库的位置,比如:/usr/lib64/libm.a
(如果找不到的话,有可能是没有安装glibc静态库,使用命令安装yum install glibs-static)
③修改Makefile.am文件

AUTOMAKE_OPTIONS=foreign  #设定automake的选项
bin_PROGRAMS=mysqrt #定义要产生应用程序的名称
mysqrt_SOURCES=mysqrt.c  #源文件以及头文件
LDADD=/usr/lib64/libm.a  #链接数学静态库

④重新走一遍生成文件Makefile.in的步骤以及重新configure/make
⑤再使用命令ldd ./mysqrt,发现已经看不到libm.so了(还能看到libc.so之类其它的动态库)

2.所有库都进行静态链接
以上的第1点已经将数学库静态链接了,但是还存在其它的动态库,将所有库都进行静态链接。
①修改Makefile.am文件

AUTOMAKE_OPTIONS=foreign  #设定automake的选项
bin_PROGRAMS=mysqrt #定义要产生应用程序的名称
mysqrt_SOURCES=mysqrt.c  #源文件以及文件
LDFLAGS=-static #增加这一行,指定优先进行静态链接
LDADD=-lm  #数学库

②重新走一遍生成文件Makefile.in的步骤以及重新configure/make
③使用命令ldd ./mysqrt,发现已经看不到所有的so了

3.指定头文件位置
在Makefile.am文件中增加对头文件位置的引用

INCLUDES= -I./include/EngineCore

4.使用std c++11
在configure.in文件中,最后一行AC_OUTPUT(Makefile)之前增加cxx编译参数

posted @ 2016-08-04 10:28  pcwen.top  阅读(3021)  评论(0编辑  收藏  举报
pcwen.top