- 主题:主程序与库中都有main函数
这项技术是通用的,还是仅限于 Linux 上的 glibc?
【 在 ylh0315 的大作中提到: 】
: 我写的框架,就用到这个技术。对一些通用函数,必须需要特定的数据或程序,就单独写一个obj。
: 如果使用者没提供这部分,就引用库里的。
: 提供了,就用用户的。
: ...................
--
修改:easior FROM 120.253.228.*
FROM 120.253.228.*
我觉得这是未定义行为。
【 在 easior 的大作中提到: 】
: 这项技术是通用的,还是仅限于 Linux 上的 glibc?
--
FROM 183.253.143.*
这个属于linker的功能,和glibc没啥关系,binutils里面的ld 具体负责这个事。
CSAPP第七章讲这个事情。更深入的内容可以读 linker and loader
【 在 easior 的大作中提到: 】
: 这项技术是通用的,还是仅限于 Linux 上的 glibc?
--
FROM 123.113.224.*
你这只是binutils linker的行为,而不是c/c++规定的行为
而ld.bfd这样做纯粹是因为最早的时候内存大小的限制io速度慢等造成的
事实上这种行为是反直觉的
Rui在实现lld的时候曾经希望改变这种缺省行为,但是依赖这种行为的代码太多了,所以没改成
【 在 z16166 的大作中提到: 】
: Linker默认按模块先后顺序查找引用到的函数,这个顺序是码农提供的,也就是码农保证
: 在库里面搞一个main(),那是属于蛋疼。即使库里的main()是测试代码,在测试完后也得注释掉。
--
FROM 107.204.171.*
binutils是传统负债也好,事实上的工业标准也好,
这种只做基础功能,然后更进一步的检查做成可选的,感觉这种tradeoff没啥问题
【 在 BigCarrot 的大作中提到: 】
: 你这只是binutils linker的行为,而不是c/c++规定的行为
: 而ld.bfd这样做纯粹是因为最早的时候内存大小的限制io速度慢等造成的
: 事实上这种行为是反直觉的
: ...................
--
FROM 221.218.160.*
难道你们说的是别的事情?
不然的话,我感觉老鱼应该知道这个:
https://en.wikipedia.org/wiki/Weak_symbol
【 在 hgoldfish 的大作中提到: 】
: 我觉得这是未定义行为。
:
--
FROM 123.168.95.*
我不是在强调弱符号
而是那个链接里,对于两个strong symbol如何决定谁覆盖谁也有描述
【 在 z16166 的大作中提到: 】
: 楼主的例子跟这个特性没关系,他那个例子里没任何地方标注了弱符号
:
--
FROM 223.104.194.*