C/C++本地一次编译后,可在任何Linux发行版上运行。

本文介绍了如何使C/C++程序在编译一次后,能够在任何Linux发行版上运行。关键在于利用编译器参数如-Wl,--dynamic-linker, -Wl,-rpath等指定动态链接器路径和库搜索路径。文章通过一个实例展示了编译和打包过程,确保程序在目标机器上无需重新编译即可执行。" 51735506,5554115,Cocoa与Cocoa Touch:iOS与Mac OS X开发的核心框架,"['iOS开发', 'Objective-C', 'Cocoa Touch', 'Foundation框架', 'UIKit框架']
摘要由CSDN通过智能技术生成

背景:公司C/C++源代码严格不能拷贝到客户的目标机上。

需求:项目通过一次编译出的程序要能够适配任何版本Linux发行版。

通过程序的编译运行原理可以知道有几个技术问题:

  1. 编译可执行程序需要依赖的本地库的版本必须低于目标机
  2. 许多地方用到了C++语言11以及更高版本的新特性,所以编译器版本必须是新的

但是一个Linux操作系统安装的默认gcc/g++依赖的是同版本的c/c++标准库。

通过寻找解决方案,目前得到有两个:

  1. 低版本的Linux发行版上,安装高版本c/c++编译器
  2. 在高版本的Linux发行版上编译程序,然后把程序依赖的库都安装到目标机上,让程序寻找指定的库。

第一种解决方案

优点:不需要额外安装系统库,减少安装包的大小。

缺点:编译时必须使用低版本的Linux,低版本的Linux由于缺少大量的现代化库和软件的支持导致使用环境恶劣,导致开发编译调试都非常不便。

第二种解决方案

优点:自由使用所需的Linux发行版,环境良好,开发调试都是随心所欲。

缺点:安装包会

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值