我的交流程序保存在不同的目录“ source1 / abc.c”和“ source2 / abc.c”中。我想在“ object1 / abc.o”和“ object2 / abc.o”中生成目标代码。source1和source2目录中的abc.c程序都相同。但是在编译之后,对象1和对象2的两个对象(即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选项进行编译,该选项将调试信息添加到目标文件中。它们可能包含源文件的路径信息,因此不同的路径会导致不同的符号和不同的文件总大小。