首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux下解决.configure ,make,make install的报错

本教程教你怎么解决Linux软件编译遇到的问题 注意:编译安装一个软件不会被系统的包管理系统记录信息,这对于卸载和记录软件的行为都是不利的,建议您尽量使用打包好的包(.rpm .deb) 我们分3类错...如果您不知道怎么办,待回看一下下Make install错误的第一点 记:如果您没有修改ld.conf文件的权限,您还可以将库文件路径添加到LD_LIBRARY_PATH变量中。...当然这是个笨方法,也不是最好的方法,但是当你没有其他选择,你只好这么做了: export LD_LIBRARY_PATH=”$LD_LIBRARY_PATH:/your/library/directory...注意当您运行编译好的软件LD_LIBRARY_PATH必须包含您的库文件夹路径 2。...尝试获得最新版的软件(使用CVS或者SVN或者源,或者下载每日快照)并且常识编译查看时候他们已经修复了bug。 make报的错还可能由特定库/程序的错误版本造成的。

23.8K21
您找到你想要的搜索结果了吗?
是的
没有找到

ubantu 安装mp3插件

这里只安装了c和c++的编译器。(如果不指定编译的语言,则会在make不通过,爆出某些文件找不到等错误,所以还是建议在此指定编译语言为c,c++)然后开始make编译。...为保险起见,需要在环境变量LD_LIBRARY_PATH添加前面三个库的位置,键入以下命令: export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc...-0.8.1/lib:/usr/local/gmp-5.0.1/lib:/usr/local/mpfr-2.4.2/lib 然后重新make编译,在经过漫长的1小等待后,终于编译完成。...在正式使用之前还有最后一个工作要做,就是将前面安装的三个库的路径加进环境变量LD_LIBRARY_PATH中,不然在编译程序的时候会出错。.../lib:/usr/local/gcc-4.5.0/lib export LD_LIBRARY_PATH 保存重启系统后,就可以使用新装的gcc了。

1.1K40

Linux下so动态库一些不为人知的秘密

使用ldd显示的so,并不是所有so都是需要使用的,下面举个例子: main.cpp ? 使用缺省参数编译结果 ? 如果我链接一些so,但是程序并不用到这些so,又是什么情况呢?...先使用 ldd -u demo 查看不需要链接的so,看下面,一面了然,无用的so全部暴露出来了吧 ? 使用 -Wl,--as-needed 编译选项 ?...一般人使用方法是修改LD_LIBRARY_PATH这个环境变量 export LD_LIBRARY_PATH=/tmp [stevenrao]$ ....像前面提到的 -L/tmp/是属于链接时期的搜索路径,即给ld程序提供的编译链接时候寻找动态库路径;而LD_LIBRARY_PATH则既属于链接期搜索路径,又属于运行时期的搜索路径。...这里需要介绍链-rpath链接选项,它是指定运行时候都使用的搜索路径。聪明的同学马上就想到,运行时搜索路径,那它记录在哪儿呢。也像LD_LIBRARY_PATH那样,每部署一台机器就需要配一下吗。

4K20

Linux编译相关命令

一、编译可执行文件 g++ –c Hello.cpp  编译文件,生成目标文件Hello.o g++ Hello.o –o a.out  链接并重命名为可执行文件...指定链接库的路径 -l library -llibrary 指定链接库 (4)  -g    在编译的时候,产生调试信息,程序运行时可以...-fPIC -shared hello.cpp -o libmyhello.so (5)使用动态库 动态库的时候和静态库使用一样,唯一值得注意的是当目录中同时存在相同名称的动态库和静态库...,编译的时候优先使用动态库 2、fPIC选项 加上fPIC选项生成的动态库位置无关的,可以实现多个进程共享动态库,多个进程引用同一个PIC动态库,可以共享内存。...export LD_LIBRARY_PATH=./ 取消设置 export LD_LIBRARY_PATH= (3)/etc/ld.so.cache中缓存了动态库路径

3.3K00

Linux下安装并使用protobuf

/lib export LD_LIBRARY_PATH 但是,有不少声音主张要避免使用 LD_LIBRARY_PATH 变量,尤其是作为全局变量。...那也可以,就是export一个全局变 量LD_LIBRARY_PATH,然后运行程序的时候就会去这个目录中找library。一般来讲这只是一种临时的解决方案,在没有权限或临时需要的时候使用。...4. ldconfig做的这些东西都与运行程序时有关,跟编译一点关系都没有。编译的时候还是该加-L就得加,不要混淆了。 5....<<endl; } return 0; } 编译使用 g++ test.pb.h test.pb.cc write.cc -o write -lprotobuf -...g++ test.pb.h test.pb.cc read.cc -o read -lprotobuf -lpthread 成功 写的有点糙,不过主要是编译这下折腾了好几天,终于通过了

3.7K20

Linux下关于动态库的说明 | 编译以及调用

即,程序与静态库编译链接后,即使删除静态库文件,程序也可正常执行。 ​ 动态库正好相反,在编译链接,没有把库文件的代码加入到可执行文件中,所以生成的文件较小,但运行时,仍需要加载库文件。...:表示要连接的库在当前目录中 -ltest:编译器查找动态连接库时有隐含的命名规则,即在给出的名字前面加上lib,后面加上.so来确定库的名称 LD_LIBRARY_PATH:这个环境变量指示动态连接器可以装载动态库的路径...so文件,这时你要做的就是通过修改 LD_LIBRARY_PATH或者/etc/ld.so.conf文件来指定动态库的目录。...在linux下可以用export命令来设置这个值,在linux终端下输入: export LD_LIBRARY_PATH=/opt/au1200_rm/build_tools/bin: $LD_LIBRARY_PATH...例如:LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/au1200_rm/build_tools/bin。

2.1K40

CC++生态工具链——gccg++编译使用指南

GCC在链接优先使用动态库,只有当动态库不存在才开始使用静态库,如果要强制使用静态库,编译加上-static参数。 使用-Wl,-Bstatic告诉链接器优先使用静态库。...有关的环境变量: LIBRARY_PATH:使用编译期间,目标程序链接搜索动态库的路径。 LD_LIBRARY_PATH:使用于目标程序生成后,目标程序运行时搜索动态库的路径。...静态库链接,搜索库文件路径的顺序: 1. ld会去找GCC命令中的参数-L 2. gcc的环境变量LIBRARY_PATH 3....编译目标代码指定的动态库搜索路径 2. gcc的环境变量LD_LIBRARY_PATH 3. 配置文件/etc/ld.so.conf中指定的动态库搜索路径 4. 默认的动态库搜索路径/lib 5....main程序的子程序代码 -v #打印gcc编译的详细步骤信息 编译和路径参数 -l[basic library] #编译指定要使用的基础库,样例:-lpthread,针对Posix线程共享库进行编译

2.1K30

一个简单例子教会你C++动态库的用法

在 Linux 下使用 C++ 创建和使用动态库(通常是 .so 文件,即 Shared Object)包含几个关键步骤:创建动态库、编译、链接,以及在应用程序中使用这个库。...编译动态库 使用 g++(GNU C++ 编译器)来编译代码为动态库。使用 -fPIC(Position Independent Code)选项来生成与位置无关的代码,这是创建共享库所必需的。...编译程序并链接动态库 编译这个程序并链接到你的动态库。你需要指定库的位置(如果它不在标准路径中): g++ -o main main.cpp -L. -lhello 这里,-L....运行程序 在运行程序之前,你可能需要设置 LD_LIBRARY_PATH 环境变量以包含你的库文件,特别是当它不在标准库路径中: export LD_LIBRARY_PATH=....:$LD_LIBRARY_PATH ./main 这告诉运行时链接器在当前目录中查找动态库。 注意事项 确保动态库在程序运行时可用,否则程序将无法启动。

34810

CMake和静态库顺序

前面说了start-group和end-group是ld的选项,是链接选项,不是gcc/g++编译选项,直接命令行或其它编译方式也可以使用,比如命令行方式: g++ -g -o x x.cpp -Wl...,这个在使用静态库需要注意,否则会报符号找不到问题。...另外,在编译libb.a是不指定liba.a的,因为编译一个静态库不会使用到链接选项,而只需要指定需要依赖的头文件路径即可。...链接指定共享库的搜索路径(类似于设置LD_LIBRARY_PATH): -Wl,-rpath=/usr/local/abc:/data/abc 以上也可以分开写: -Wl,-rpath=/usr/local... b.o x.o x 使用上面的Makefile编译,将会遇到如下所示的“undefined reference”问题: g++ -g -c x.cpp g++ -g -c a.cpp g++ -

6.4K50

g++入门教程

-l[library] 指定编译使用的库,例子用法 gcc -lcurses hello.c 使用curses库编译连接,生成程序。...-w 关闭所有警告,建议不要使用此项。 (6)调试选项 -g 指示编译器,在编译,产生调试信息。...遇到GCC无法识别的编译指导指令,发出警告。在使用了-Wall选项,就不需要使用该命令选项了。...4.2链接注意事项 4.2.1指定静态与动态的链接方式 g++链接库,默认优先链接动态链接库。静态库与动态库混合链接,有如下两种方法: (1)静态链接库使用绝对路径,动态链接库使用-l。.... ---- 参考文献 [1]gcc及其选项详解 [2]GCC官方手册 [3]gcc编译选项 [4]gcc/g++ 静态动态库混链接 [5]折腾gcc/g++链接.o文件及库的顺序问题

14.3K21

【一站式解惑】Linux中.a、.so和.o文件以及-I,-L,LIBRARY_PATH,LD_LIBRARY_PATH等

在Linux下,共享库的加载是由/lib/ld.so完成的,ld.so加载共享库,会从ld.so.cache查找。 创建函数库示例 我们通常把一些公用函数制作成函数库,供其它程序使用。...本节主要通过举例来说明如何在Linux中创建静态库和动态库,以及使用它们。 在创建函数库前,我们先来准备举例用的源程序,并将函数库的源程序编译成.o文件。...step4:在程序中使用静态库 静态库制作完了,如何使用它内部的函数呢?...动态链接、执行时搜索路径顺序: 1. 编译目标代码指定的动态库搜索路径 2. 环境变量LD_LIBRARY_PATH指定的动态库搜索路径 3....:XXXX 3.LD_LIBRARY_PATH环境变量:指定程序动态链接库文件搜索路径 export LD_LIBRARY_PATH=LD_LIBRARY_PATH:XXXX 另 从上述可知,如何找到生成的动态库有

3.8K52

【Linux】软硬链接与动静态库

,我们想要使用这个静态库,该如何使用呢?...第一种方式使用静态库:编译手动指定 gcc/g++编译选项 含义 -L 指定库所在的路径 -I(大写i) 指定头文件所在路径 -l(小写L) 指定库名称(去掉前后缀) 如下,假如我要使用这个静态库,...我先将这个压缩包解压:  接下来我们进行g++编译,这里编译我们手动指定所需要的库名(-l)、库路径(-L)、头文件路径(-I)。...对于静态库的使用,还有第二种方法如下: 第二种方式使用静态库:将头文件以及库文件安装在系统目录 由于gcc/g++编译,会默认去系统目录搜索,进行路径匹配,这也是为什么我们平常用c/c++标准库,...2、将库路径导入环境变量LD_LIBRARY_PATH中 用export指令,将库路径(绝对路径)导入环境变量LD_LIBRARY_PATH中,如下: export LD_LIBRARY_PATH=$LD_LIBRARY_PATH

17530

Linux下动态库(.so)和静态库(.a) 的区别

,有的UNIX版本C语言编译器默认带上了PIC标准.创建最终动态库的方法一般采用C语言编译器的-G或者-shared选项,或者直接使用工具ld创建。...:表示要连接的库在当前目录中 -ltest:编译器查找动态连接库时有隐含的命名规则,即在给出的名字前面加上lib,后面加上.so来确定库的名称 LD_LIBRARY_PATH:这个环境变量指示动态连接器可以装载动态库的路径...当然如果有root权限的话,可以修改/etc/ld.so.conf文件,然后调用 /sbin/ldconfig来达到同样的目的,不过如果没有root权限,那么只能采用输出LD_LIBRARY_PATH的方法了...隐式调用动态库和静态库使用方法一致,使用静态库和使用动态库编译成目标程序使用的gcc命令完全一样,那当静态库和动态库同名,gcc命令会使用哪个库文件呢?...通过测试可以发现,当静态库和动态库同名, gcc命令将优先使用动态库.为了确保使用的是静态库, 编译可以加上 -static  选项,因此多第三方程序为了确保在没有相应动态库时运行正常,喜欢在编译最后应用程序时加入

16.5K21
领券