g++编译选项

1)指定运行时库(.so)搜索路径:

例:-Wl,-rpath=.

指定运行时库搜索路径为工作目录。

2)指定编译时库(.so)搜索路径:

例:-Wl,-rpath-link=.

例:-L .

指定编译时库搜索路径为工作目录。

3)指定头文件 -I path

例:g++ main.c -L /root/test/openssl3/lib64 -I /root/test/openssl3/include -Wl,-rpath=/root/test/openssl3/lib64 -lcrypto -o main -fpermissive

例子中openssl-3.0头文件放在“/root/test/openssl3/include”文件夹下,实验系统中还有一个openssl-1.1版本的库,所以需手动指定头文件包含路径。

4)指定库文件 -L path

例:g++ main.c -L /root/test/openssl3/lib64 -I /root/test/openssl3/include -Wl,-rpath=/root/test/openssl3/lib64 -lcrypto -o main -fpermissive

例子中openssl-3.0库文件(.so)放在“/root/test/openssl3/lib64”文件夹下,实验系统中还有一个openssl-1.1版本的库,所以需手动指定库文件包含路径。“-Wl,-rpath”指定了main程序运行时libcrypto.so.3的搜索路径。

5)指定部分库静态链接

例:使用GCC编译并链接主程序,指定 libstatic.a 静态链接,libdynamic.so 动态链接

        gcc main.c -o myprogram -l:libstatic.a -ldynamic

6)gcc编译器库文件和头文件搜索路径

        /usr/local/include、/usr/local/lib。可以将第三方库文件和头文件放到这两个文件夹下面,然后运行ldconfig命令更新ld链接器搜索路径列表。

11)Visual Studio 2022跨平台项目,动态库链接错误问题:

问题:通过“-Wl,-L/root/git/openssl/build/lib64/”选项设置附加链接库路径无效

如下图所示,链接时未链接到指定库目录下的libcrypto库,而是链接到了一个系统目录下的库。

解决方法:将其改为“-L/root/git/openssl/build/lib64/”。

如下图所示,链接时已经链接到指定库目录下的libcrypto库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值