gpt4 book ai didi

从不同目录编译相同的 c 程序会生成不同大小的目标代码

转载 作者:太空狗 更新时间:2023-10-29 15:28:09 24 4
gpt4 key购买 nike

我有一个 c 程序保存在不同的目录“source1/abc.c”和“source2/abc.c”中。我想在“object1/abc.o”和“object2/abc.o”中生成目标代码。 source1 和 source2 目录下的 abc.c 程序是一样的。但是在编译之后,object1 和 object2 的对象(即 abc.o )的大小不同。我正在使用相同的标志进行编译。

我尝试从 object1 和 object2 以外的其他目录编译代码,编译后的大小相同。

cc -c source1/abc.c -DLINUX -D_LARGE_THREADS -D_THREAD_SAFE -D_REENTRANT -pthread -D_GNU_SOURCE -g -fPIC -O3  -lpthread  -lm  -lrt  -o object1/abc.o
cc -c source2/abc.c -DLINUX -D_LARGE_THREADS -D_THREAD_SAFE -D_REENTRANT -pthread -D_GNU_SOURCE -g -fPIC -O3 -lpthread -lm -lrt -o object2/abc.o

abc.o 的大小应该相等还是取决于它运行的目录?c程序编译时有哪些依赖?

最佳答案

您正在使用 -g 选项进行编译,这会将调试信息添加到目标文件中。这些可能包含源文件的路径信息,因此不同的路径导致不同的符号和不同的总文件大小。

关于从不同目录编译相同的 c 程序会生成不同大小的目标代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57180489/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com