博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CentOS下的Autoconf和AutoMake(完善篇) 3
阅读量:6168 次
发布时间:2019-06-21

本文共 994 字,大约阅读时间需要 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编译参数

CXXFLAGS="$CXXFLAGS -std=c++11"
 
《》
《》

转载于:https://www.cnblogs.com/chevin/p/5735685.html

你可能感兴趣的文章
hadoop伪分布式部署
查看>>
关于C# -WINFORM-DataGridView的更新、删除
查看>>
【Android进阶学习】监听EditText的变化
查看>>
gulp 插件之 del
查看>>
vim configure
查看>>
workstation实现host only或nat模式下不同网段互通
查看>>
准直器——通道式安检机中用到的一个光学元件
查看>>
Nginx一点总结
查看>>
Linux_MySQL(mariadb)基础(1)V1.0
查看>>
HDU1280 前m大的数
查看>>
系统自动化安装kickstart文件解析
查看>>
澄清大数据存储——系统集成商篇
查看>>
学习git知识_1
查看>>
RHEL5.5下vsftp服务器搭建
查看>>
Netscreen与Cisco跑OSPF
查看>>
Python辅助安全测试常用代码示例
查看>>
软件质量之web项目的CUT
查看>>
Git——新手入门与上传项目到远程仓库GitHub(转)
查看>>
EF 数据查询效率对比
查看>>
Request、Request.Form和Request.QueryString的区别
查看>>