zoukankan      html  css  js  c++  java
  • 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编译参数

  • 相关阅读:
    国内外手机号码正则表达式
    apt安装Neo4j
    经典决策树模型
    自动文档摘要评价方法
    scrapy-splash解析javascript
    ubuntu安装splash
    iptables的删除命令中的相关问题
    ARTS第七周
    ARTS第六周
    ARTS第五周
  • 原文地址:https://www.cnblogs.com/chevin/p/5735685.html
Copyright © 2011-2022 走看看