linux下运行c程序问题

时间:2022-11-13 09:18:26
在linux下运行c程序,make生成.o文件后,为什么此.o文件不能执行?谢谢!

13 个解决方案

#1


.o只是中间文件.
不是可执行文件.

gcc xx.o -o  program
./program

#2


为什么此.o文件不能执行?
楼主见过哪里的.o文件可以执行吗?

#3


引用 2 楼 louyong0571 的回复:
为什么此.o文件不能执行?
楼主见过哪里的.o文件可以执行吗?
请问已经有了makefile文件,用make命令怎么编译运行一组c文件?

#4


引用 3 楼 baijing3140 的回复:
引用 2 楼 louyong0571 的回复:

为什么此.o文件不能执行?
楼主见过哪里的.o文件可以执行吗?
请问已经有了makefile文件,用make命令怎么编译运行一组c文件?

make

#5


引用 4 楼 zmlovelx 的回复:
引用 3 楼 baijing3140 的回复:

引用 2 楼 louyong0571 的回复:

为什么此.o文件不能执行?
楼主见过哪里的.o文件可以执行吗?
请问已经有了makefile文件,用make命令怎么编译运行一组c文件?

make
我执行make了,就是执行之后生成了一堆.o文件,我记得以前make之后直接可以运行的

#6


 你的makefile不对或者是,生成了可执行文件,但是你没发现,比如在其他目录.

把makefile贴上来.

#7


只生成了.o 文件 还要把.o 文件编译成binary文件

#8


.o能执行才怪呢

#9


引用 6 楼 zmlovelx 的回复:
 你的makefile不对或者是,生成了可执行文件,但是你没发现,比如在其他目录.

把makefile贴上来.

checkModules: checkModules.o logger.o readPolicy.o analyzePolicy.o destructor.o showResults.o translateModules.o data.o
cc -o checkModules checkModules.o logger.o readPolicy.o analyzePolicy.o destructor.o showResults.o translateModules.o data.o

checkModules.o: checkModules.c checkModules.h
cc -c -g checkModules.c -DDEBUG

logger.o: logger.c logger.h
cc -c -g logger.c -DDEBUG

readPolicy.o: readPolicy.c readPolicy.h
cc -c -g readPolicy.c -DDEBUG

analyzePolicy.o: analyzePolicy.c analyzePolicy.h
cc -c -g analyzePolicy.c -DDEBUG

destructor.o: destructor.c destructor.h
cc -c -g destructor.c -DDEBUG

showResults.o: showResults.c showResults.h
cc -c -g showResults.c -DDEBUG

translateModules.o: translateModules.c translateModules.h
cc -c -g translateModules.c -DDEBUG

data.o: data.c data.h
cc -c -g data.c -DDEBUG

clean:
rm *.o checkModules

#10


没有生成 checkModules 么?
这个是最终的可执行文件.
有的话运行它.
./checkModules

#11


上面的Makefile的最上面一行应该可以把一堆目标文件链接成可执行文件checkModules吧,去找checkModules执行啊。。

#12


.o文件应该还没有给其中二进制代码没有分配虚拟地址,所以不能载入运行.

#13


要最终编译成可执行文件才行。先通过-c编译成.o文件,然后再通过-o编译成可执行文件。如下:
gcc -c main.c ->生成main.o文件,这个文件是目标文件
gcc -o main main.o->生成main可执行文件
./main->执行

#1


.o只是中间文件.
不是可执行文件.

gcc xx.o -o  program
./program

#2


为什么此.o文件不能执行?
楼主见过哪里的.o文件可以执行吗?

#3


引用 2 楼 louyong0571 的回复:
为什么此.o文件不能执行?
楼主见过哪里的.o文件可以执行吗?
请问已经有了makefile文件,用make命令怎么编译运行一组c文件?

#4


引用 3 楼 baijing3140 的回复:
引用 2 楼 louyong0571 的回复:

为什么此.o文件不能执行?
楼主见过哪里的.o文件可以执行吗?
请问已经有了makefile文件,用make命令怎么编译运行一组c文件?

make

#5


引用 4 楼 zmlovelx 的回复:
引用 3 楼 baijing3140 的回复:

引用 2 楼 louyong0571 的回复:

为什么此.o文件不能执行?
楼主见过哪里的.o文件可以执行吗?
请问已经有了makefile文件,用make命令怎么编译运行一组c文件?

make
我执行make了,就是执行之后生成了一堆.o文件,我记得以前make之后直接可以运行的

#6


 你的makefile不对或者是,生成了可执行文件,但是你没发现,比如在其他目录.

把makefile贴上来.

#7


只生成了.o 文件 还要把.o 文件编译成binary文件

#8


.o能执行才怪呢

#9


引用 6 楼 zmlovelx 的回复:
 你的makefile不对或者是,生成了可执行文件,但是你没发现,比如在其他目录.

把makefile贴上来.

checkModules: checkModules.o logger.o readPolicy.o analyzePolicy.o destructor.o showResults.o translateModules.o data.o
cc -o checkModules checkModules.o logger.o readPolicy.o analyzePolicy.o destructor.o showResults.o translateModules.o data.o

checkModules.o: checkModules.c checkModules.h
cc -c -g checkModules.c -DDEBUG

logger.o: logger.c logger.h
cc -c -g logger.c -DDEBUG

readPolicy.o: readPolicy.c readPolicy.h
cc -c -g readPolicy.c -DDEBUG

analyzePolicy.o: analyzePolicy.c analyzePolicy.h
cc -c -g analyzePolicy.c -DDEBUG

destructor.o: destructor.c destructor.h
cc -c -g destructor.c -DDEBUG

showResults.o: showResults.c showResults.h
cc -c -g showResults.c -DDEBUG

translateModules.o: translateModules.c translateModules.h
cc -c -g translateModules.c -DDEBUG

data.o: data.c data.h
cc -c -g data.c -DDEBUG

clean:
rm *.o checkModules

#10


没有生成 checkModules 么?
这个是最终的可执行文件.
有的话运行它.
./checkModules

#11


上面的Makefile的最上面一行应该可以把一堆目标文件链接成可执行文件checkModules吧,去找checkModules执行啊。。

#12


.o文件应该还没有给其中二进制代码没有分配虚拟地址,所以不能载入运行.

#13


要最终编译成可执行文件才行。先通过-c编译成.o文件,然后再通过-o编译成可执行文件。如下:
gcc -c main.c ->生成main.o文件,这个文件是目标文件
gcc -o main main.o->生成main可执行文件
./main->执行