因为各个Linux发行版之间的差异还是挺大的,有一些预安装在系统上的基本库是不一样的(不仅仅是版本,有一些是有和无的区别)。

那么问题来了:

编译第三方库./configure的时候一般我们不会定制那么多参数配置(什么enable-with-XXX的),直接 ./configure --prefix=[path] 然后 make install就行了。其实configure的时候它自动就会detect系统上一些依赖的基本库(libbz libxml),如果有就把需要的支持打开,把相关的基本库的函数编译进去。

下面举个例子更清晰些:

比如某个第三方库的源码里面依赖这样写:

 #if ENABLE_XML
void parser_xml()//调用xml库的接口解析XML
#else
// nothing to do
#endif

那么编译的时候,如果configure的时候没有detect到xml库,那么直接,就没有parser_xml之类的函数符号了。如果detect到了,就把这个函数符号编译进去了。因为第三方库只是库,又不进行链接这个过程。所以函数有没有定义都不会错。所以,当我们需要用到第三方库的时候,把第三方库作为库链接到我们最终的可执行程序elf中的时候,就会提示parser_xml之类的函数符号找不到了定义了。所以需要手动给ln链接器显式指定xml的库。

Linux下编译第三方库的问题的更多相关文章

  1. Linux下编译boost库和qt和ImageMagick

    需要把整个PCIE的工程移植到Linux下,当初就是用cmake来管理的工程的.但是命令行之类的还是需要改动.改动还不少,cmake里面很多东西都依赖于windows.包括我用cmake重新管理的工程 ...

  2. Linux下 编译lib3ds库

    从网上下载的一个QT程序链接需要用到lib3ds.a静态库. lib3ds is an overall software library for managing 3D-Studio Release ...

  3. linux下编译Boost库

    下载源码 boost_1_66_0.tar.gz 生成编译工具 # tar axf boost_1_66_0.tar.gz # cd boost_1_66_0 # yum install gcc gc ...

  4. linux下编译visp库

    #下载源码git clone "https://github.com/lagadic/visp.git"#work目录mkdir work#build目录mkdir build#c ...

  5. linux下编译 静态库、动态库,动态库依赖静态库

    xx.o : xx.h xx.cpp -lstdc++ -o xx.o -c xx.cpp -I ./ libxx.a : xx.o ar -crv libxx.a xx.o libTest.so : ...

  6. linux下编译lua库

    编辑MakeFile INSTALL_TOP= /usr/local修改为目标install位置 执行 make linux make install 如果提示依赖libreadline  可以直接a ...

  7. linux下编译静态库openssl

    先编译zlib cmake . -DCMAKE_INSTALL_PREFIX=/depends make make install 然后编译openssl ./config zlib no-rc5 n ...

  8. linux下编译qt5.6.0静态库——configure配置

    linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...

  9. linux下编译qt5.6.0静态库——configure配置(超详细,有每一个模块的说明)(乌合之众)

    linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...

随机推荐

  1. 【转】 boot.img的解包与打包

    原文网址:http://blog.csdn.net/wh_19910525/article/details/8200372 Android 产品中,内核格式是Linux标准的zImage,根文件系统采 ...

  2. libeXosip2(3-1) -- eXosip2 INVITE and Call Management

    eXosip2 INVITE and Call Management SIP messages and call control API Functions int  eXosip_call_set_ ...

  3. <php>PDO用法二

    <?php //造PDO对象 $pdo = new PDO("mysql:dbname=mydb;host=localhost","root"," ...

  4. [转] Trie树详解及其应用

    一.知识简介         最近在看字符串算法了,其中字典树.AC自动机和后缀树的应用是最广泛的了,下面将会重点介绍下这几个算法的应用.       字典树(Trie)可以保存一些字符串->值 ...

  5. mybatis学习笔记第一讲

    第一步:先配置mybatis配置 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE confi ...

  6. hdu 5391 Zball in Tina Town(打表找规律)

    问题描述 Tina Town 是一个善良友好的地方,这里的每一个人都互相关心. Tina有一个球,它的名字叫zball.zball很神奇,它会每天变大.在第一天的时候,它会变大11倍.在第二天的时候, ...

  7. .NET 面试题(2)

    61.Application .Cookie和 Session 两种会话有什么不同? 1.Application 储存在服务端,没有时间限制,服务器关闭即销毁(前提是自己没写销毁方法) 2.Sessi ...

  8. [iOS]数据库第三方框架FMDB详细讲解

    [iOS]数据库第三方框架FMDB详细讲解 初识FMDB iOS中原生的SQLite API在进行数据存储的时候,需要使用C语言中的函数,操作比较麻烦.于是,就出现了一系列将SQLite API进行封 ...

  9. sybase从表A创建表B

    sybase从表A创建表B 例如:需要创建一张表B,表的内容及结构跟表A完全一样,类似于SQL SERVER中的CREATE TABLE A AS SELECT * FROM B; 在sybase中只 ...

  10. 关于css3的rgba

    在rgba之前,我们应该知道rgb.它就是红色R+绿色G+蓝色B.那rgba是什么?简单的说就是在rgb的基础之上加上一个通道alpha.他的语法如下: r    红色值.正整数(0~255) | 百 ...