- 主题:静态链接的三大坑
你是说whole archive那个开关吧
加这个开关,编译器不会优化掉静态库里没人引用的全局对象初始化,不过文件尺寸会变大点,着急时可以用这招
【 在 Giwatron 的大作中提到: 】
: 问题3貌似有个编译开关可以解决
--
FROM 222.131.206.*
服务端不用docker?
【 在 hgoldfish 的大作中提到: 】
: 服务端用这个链接容易布署啊。全静态链接完可以随便往服务器上面复制运行。
: --
: 灭绝人性啊
发自「今日水木 on Android」
--
FROM 123.118.15.*
搞纯粹的静态链接很难,即使代码都是自己写的,也会遇到一堆问题,解决起来很头疼。
现在我感觉还是应该走比较自然的路子,动态链接,把环境标准化即可,有人工运维在,或者用docker(最好Linux kernel也完全一致),都可以做到。
【 在 z16166 的大作中提到: 】
: 最近一直在改造一些库使用musl静态链接
: 三大坑:
: 1、在头文件中声明并且初始化的一堆变量(主要是接口的GUID)。
: ...................
--
FROM 123.112.66.*
自己写的代码很好搞。纯静态我已经实现了。
不过呢,基本等于白搞,因为现在加了GUI程序(不是服务端的),用GTK,
而GTK的导入表依赖有近70个*.so,搞完会吐血身亡的,官方也不推荐搞静态的,庞大臃肿,而且面临的X win版本复杂。
现在只能是在glibc版本比较低的CI系统上build。
更大的问题是ko,这东西跟kernel紧耦合,kernel编译参数改一下可能都会导致不兼容。
【 在 likely 的大作中提到: 】
: 搞纯粹的静态链接很难,即使代码都是自己写的,也会遇到一堆问题,解决起来很头疼。
: 现在我感觉还是应该走比较自然的路子,动态链接,把环境标准化即可,有人工运维在,或者用docker(最好Linux kernel也完全一致),都可以做到。
:
--
FROM 222.131.206.*
甭折腾这个了,现在都用docker打包,随便依赖
【 在 z16166 的大作中提到: 】
: 最近一直在改造一些库使用musl静态链接
: 三大坑:
: 1、在头文件中声明并且初始化的一堆变量(主要是接口的GUID)。
: ...................
--
FROM 219.143.157.*
戴套抽插不爽。
【 在 wudashu 的大作中提到: 】
: 服务端不用docker?
: 发自「今日水木 on Android」
--
FROM 183.253.146.*
虽然。。但是。。
【 在 poggy 的大作中提到: 】
:
: 问题一纯粹是代码写的烂
: 声明是声明,定义是定义, 头文件里不应当添加任何设计内存变量或类对象的定义,可以做extern什么,
: ...................
--
FROM 222.129.50.*
一个人的工程可以控制,多人的很难吧
【 在 hgoldfish 的大作中提到: 】
: 戴套抽插不爽。
:
--
FROM 114.249.18.*
多人的也可以简单,基础架构的定好版本和规范,提供基础库的lib,也可以做到全静态链接,最后应用打成一个几G到十几G的bin,对大厂来说,只要业务/kpi需要,没有什么干不成的
【 在 littleSram 的大作中提到: 】
: 一个人的工程可以控制,多人的很难吧
: :
--
FROM 221.224.15.*
这算是食古不化吗
【 在 hgoldfish 的大作中提到: 】
: 戴套抽插不爽。
--
FROM 219.143.157.*