美文网首页
c++ 编译 链接库文件

c++ 编译 链接库文件

作者: 无聊就搞科研 | 来源:发表于2021-03-04 23:06 被阅读0次

问题:从下载了c++ 的multinest库,安装好之后调试,发现一直找不到。

1. 熟悉环境变量,

修改环境变量PATH

PATH路径:告诉shell将到哪些目录中寻找命令或程序,PATH是一系列目录,当运行一个可执行程序时,Linux在这些目录下进行搜寻。
当安装了软件包(例如mathematica),需要输入命令直接执行时,可以把软件包的可执行文件目录添加到PATH路径,这样就可以在任何路径直接执行。
PATH格式:PATH=$PATH:<PATHnew1>:<PATHnew2>
添加环境变量的方式:
1.直接终端添加,只对本进程有效。终端关闭会失效。
2.用户家目录更改(只对本用户有效) ~/.bashrc 或者 ~/.profile, 更改完之后需要source ~/.bashrc
3 对所有用户都有效,在/etc/profile文件添加PATH。

LIBRARY_PATH环境变量用于在程序编译期间查找动态链接库时指定查找共享库的路径,例如,指定gcc编译需要用到的动态链接库的目录。

LD_LIBRARY_PATH环境变量用于在程序加载运行期间查找动态链接库时指定除了系统默认路径之外的其他路径,注意,LD_LIBRARY_PATH中指定的路径会在系统默认路径之前进行查找。

2. g++ 编译参数

首先g++ 编译可以跟的参数解释:
-l(小写L)
就是用来指定程序要链接的库,-l参数紧接着就是库名,lib+库名+.so
-L
按照L后面的路径进去寻找库文件
-I(大写i)
表示:编译程序按照-I指定的路进去搜索头文件。

3.解决问题

编译链接:
g++ a.cpp -L(.so路径) -I(头文件路径) -lmultinest
./a.out
编译成功了,但是运行a.out会报错.error while loading shared libraries: libmultinest.so.3.10: cannot open shared object file: No such file or directory
后来发现程序加载的时候也要找库文件,而运行的时候找的是默认的库文件。所以应该把这个库文件路径添加到环境变量LD_LIBRARY_PATH。添加好之后再编译链接就不会出问题了。
如果经常需要编译这个库,也可以把这个库的include路径,

相关文章

  • c++ 编译 链接库文件

    问题:从下载了c++ 的multinest库,安装好之后调试,发现一直找不到。 1. 熟悉环境变量, 修改环境变量...

  • 命令行编译C++/C文件

    编译C文件用GCC 编译C++文件(包括.C/C++文件)用G++ 编译C++文件常用方法: 单个文件: g++ ...

  • C++调用matlab代码

    主要通过 mex将matlab代码编译成C/C++动态链接库(dll) 编写matlab函数 设置编译器 编译ma...

  • 静态链接库

    如何创建静态链接库 vs新建项目,选择静态链接库 在项目文件中新建 .cpp 文件与.h 文件 项目编译生成后会产...

  • Linux C 编程基础

    1、gcc编译过程 基本命令: 2、编译文件 3、静态链接库 (1) 首先用-c编译各个单源文件.c生成.o文件 ...

  • Java 调用本地代码库

    什么是动态链接库 C/C++编译出来的库有两种:静态链接库和动态链接库。 静态库后缀名在Windows上是.lib...

  • C-3

    DLL-动态链接库 lib-静态链接库 编译成obj文件之后,将多个obj文件连接成lib文件。当程序用到lib里...

  • Unreal 如何编译C++

    1. C++编译 (1)C++编译后生成的文件 以下对生成文件的常见文件进行说明 (2.)C++编译过程 2. U...

  • C和C++中动态链接库的创建和链接(原创,装载请注明原处)

    C和C++中动态链接库的创建和链接 1.创建DLL(动态链接库)-C++方式 1.创建DLL(动态链接库-C++方...

  • Linux编译-GCC以及Makefile

    gcc 1、一个C/C++文件的编译过程,经过 示例: (1) 预处理,生成预编译文件 ( . 文件) (2)编译...

网友评论

      本文标题:c++ 编译 链接库文件

      本文链接:https://www.haomeiwen.com/subject/opylqltx.html