gcc编译器的链接、装载问题

gcc是一款Linux系统上普遍使用的轻便型代码编译工具,在bash shell下通过命令行操作可完成程序代码的编译、汇编、链接工作。
gcc基本编译指令格式如下:

gcc -o executefile sourcefile.c -L<库文件路径> -l<动态库名字> -I<头文件路径> 

编译时,gcc按照从右向左的顺序加载指定的文件,因此依赖项(如头文件、库文件等)必须置于源文件右侧,否则会出现类似于:undefined reference to ×××函数 的错误。
上述命令由一系列代码模块生成可执行文件executefile,./executefile即可执行程序,但由于使用了动态链接库,在各模块链接的过程中,动态库(.so)实际上并没有整合进executefile,此后执行程序有可能会找不到需要实时加载的动态库路径而失败。一种解决方案是,执行之前临时添加环境变量路径:

export LD_LIBRARY_PATH=<库文件路径>

此设置在系统重启后失效。
另一种方法是在/etc/ld.so.config.d目录下创建新文件usr-libs.conf,写入lib路径:/home,然后使用命令/sbin/ldconfig更新配置即可。
特别指出,gcc编译器首先从源文件所在的目录下寻找各模块代码,若程序员将所有需要的文件都放在同一目录下,则不存在上述问题,只需按依赖关系列出各模块文件名即可。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值