在之后,由于需求不断修正,所以这篇是针对的一些完善。(以后内容会不定期增加完善)
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编译参数 CXXFLAGS="$CXXFLAGS -std=c++11"
《》
《》