linux程序怎样静态链接glibc相关的库,程序发布不依赖glibc版本 最近发布一款Linux程序在自己开发环境上跑得好的了,程序到客户目标机就提示glibc版本过低。目前了解到可以通过下载新版本的glibc升级客户目标机系统即可,但客户不愿意,希望能发布一款能够静态链接上glibc相关的库文件。求大神指点,或者给个demo参考,谢谢!补充一点:程序需要链接一个其他厂商提供的.so动态库。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不难吧?把你用到的动态库编译为静态库,加入到你最终的可执行文件就行了。glibc去下载源码,不说了,点到为止~ 动态库那个是其他厂商提供的,如果真的没其他办法。联系厂家也许可能改个静态库。但是glibc应该是不那么单纯的把源码或把静态库加到工程里编译就能通过吧。我有试过,但是都会莫名提示一些像程序入口没找到之类的。求大神做过的提供一个参考例子呀 感觉在客户类似环境下编译更简单一些,或者docker?全静态编译不依赖运行环境应该是不可能的吧 办法值得一试,或者在自己的环境下,更新与客户同一版本的glibc。 办法有很多:1: 使用静态库方式2: 仍然使用动态库的方式,但是将动态库随着程序包一起发布,并且在编译之后指定动态库加载的路径(-rpath 编译参数)3:通过linux的动态库版本控制来做。按照你的意思,这个方案用户不同意。建议使用第二种。 这容易 解决,本身gcc就支持半静态方式连接不过需要使用makefile文件方式进行你可以选择将glibc stdc++库等全部使用-static静态连接,但是第三方提供的 动态库使用动态连接建议你使用低版本glibc环境编译连接,例如centos7,这样编译出来的是for GNU Linux 2.6放到高版本环境也不会有问题 Linux下编译错误,大神可以告诉我哪里错了吗。 centos6.5除了桌面背景什么都没有,什么选项的都没有,怎么办,还不想重装 在远程连接Ubuntu时出现的问题,是不是xrdp的配置出现错误了 java项目在linux下验证码显示有问题 kali第二系统 求大神解决问题 你们都在用什么系统呢?有用deepin的吗? liunx基本命令 ubuntu怎么设置开机启动jar包 求助如何卸载LINUX(小白) shell脚本 ubuntu cannot execute binary file: Exec format error,交叉编译器安装失败
全静态编译不依赖运行环境应该是不可能的吧
办法值得一试,或者在自己的环境下,更新与客户同一版本的glibc。
1: 使用静态库方式
2: 仍然使用动态库的方式,但是将动态库随着程序包一起发布,并且在编译之后指定动态库加载的路径(-rpath 编译参数)
3:通过linux的动态库版本控制来做。按照你的意思,这个方案用户不同意。建议使用第二种。
不过需要使用makefile文件方式进行
你可以选择将glibc stdc++库等全部使用-static静态连接,但是第三方提供的 动态库使用动态连接
建议你使用低版本glibc环境编译连接,例如centos7,这样编译出来的是for GNU Linux 2.6
放到高版本环境也不会有问题