首页 > 编程知识 正文

windows gcc编译器,gcc makefile

时间:2023-05-03 08:12:06 阅读:164406 作者:1730

库文件是只有连接(静态库和共享库)和运行)共享库的程序,静态库与可执行文件一起编译其搜索路径在系统中设置。 在典型的Linux系统上,使用/lib和/usr/lib两个目录作为缺省库搜索路径,以便在使用这两个目录中的库时可以直接使用它们,而无需设置搜索路径。 对于非默认库搜索路径的库,必须将库位置添加到库搜索路径中。

要设置库文件的搜索路径,通常有以下几种方法:

环境变量,如LIBRARY_PATH和LD_LIBRARY_PATH :指定连接和运行库文件路径; /etc/ld.so.conf文件:添加链接时库文件的搜索路径。 在运行时,必须使用ldconfig命令将路径更新为ld.so.cache。 g /gcc参数-L、-L和-I :指定链接时库文件的路径、名称和头文件。 在运行时,必须使用环境变量,或者在/etc/ld.so.conf文件中指定环境变量,或者将其放到缺省/lib路径中。 然后,ldconfig; 接下来,分为连接、运行的不同阶段分别进行解读吧。 参见: 0.2动态链接,静态链接. note

1、环境变量:

将以下环境变量添加到/etc/profile中:

1 )编译时使用的环境变量:

#找到gcc头文件的路径c _ include _ path=/usr/include/libxml 23360/mylibexportc _ include _ path # g找到头文件的路径CPP 在编译的链接(link )阶段,mylibexportcplus _ include _ path # gcc和g表示库文件的目录列表library _ path=$ library _ path

#在程序运行时查找ku文件的路径LD _ library _ path=$ LD _ library _ path :/mylibexportld _ library _ path3)示例:

创建头文件my_so_test.h和两个源文件test1.cpp、test2.cpp,并创建名为libmytest.so的动态链接库文件。

3.1 )先用$ g-olibmytest.so-shared-fpic test1.CPP test2. CPP建立动态链接库;

3.2 )为main.cpp调用创建动态连接库:

#include 'my_so.h'int main () { test1 ); test2(; 返回0; }编译,连接:

解决方案: vim /etc/profile,添加以下内容,然后单击source /etc/profile :

library _ path=$ LD _ library _ path :/home/roo/xsd RS/test6/soexportlibrary _ path随后编译,连接: $ g-orurue

3.3 )运行:

vim /etc/profile,添加以下内容,然后source /etc/profile

LD _ library _ path=$ LD _ library _ path :/home/roo/xsd RS/test6/soexportld _ library _ path随后为./run

2、/etc/ld.so.conf 文件:

将库文件的所有路径添加到/etc/ld.so.conf是雪白花瓣的选择,添加方法也很简单,每行一个,例如:

完成/usr/x11r6/lib/usr/local/lib/opt/lib的添加后,仅添加链接不会产生错误,在运行之前,请使用ldconfig命令刷新ld.so.cache

如:果然如上例

2.1 )连接:

将动态库复制到系统的默认库路径时,编译链接将通过。 或在/etc/ld.so.conf中添加/home/roo/xsdrs/test6/so行

2.2 )运行:

解决方案:运行ldconfig之后可以正常运行。

3、gcc/g++参数:

尝试在上面的示例中指定-L,-L,-I (头文件中的)参数。

1 )编译,连接:

$ g -o run main.cpp -L./-lmytest

说明:使用-L参数指定库文件地址-L指定动态库的名称;

2 )运行:

3 )解决:

使用LD_LIBRARY_PATH环境变量,或在/etc/ld.so.conf文件中指定库文件路径,然后在ldconfig中刷新ld.so.cache。

默认库文件路径、头文件路径

1、显示默认库文件路径:

gcc----打印搜索- dirg----打印搜索- dir

2、查看默认头文件(包括)的路径:

` gcc-print-Prog-name=cc1 plus `-v ` g-print-Prog-name=cc1 plus `-v

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。