gcc/g++编译时-l参数优先选择静态库还是动态库?

学习makefile时,同时采用了静态库和动态库的链接方式,发现编译器会优先选择动态库使用。

对于gcc/g++,一般通过-l参数来链接动态库和静态库,默认优先使用动态库进行链接。

在网上搜索了下,发现了几种强制使用静态库进行链接的方式。

1. 因此想强制链接某一个静态库的时候,可以直接使用静态库的名字,包括后缀名和前缀,例如libcurl.a,不通过-l来链接

例如:gcc -o static_lib_link -ggdb -O3 -I./include test.cpp libcurl.a

这样子就会把静态库直接链接进来,这个例子中要求test.cpp和libcurl.a在当前编译路径下


2. 另一种方式是通过-static,这是静态链接,要求链接所有的库都有对应的静态库

gcc -static -o shared_lib_link -ggdb -O3 -I./include test.cpp -L./lib -lcurl

这个命令会寻找静态库进行链接

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值