13 个解决方案
#1
.o只是中间文件.
不是可执行文件.
gcc xx.o -o program
./program
不是可执行文件.
gcc xx.o -o program
./program
#2
为什么此.o文件不能执行?
楼主见过哪里的.o文件可以执行吗?
楼主见过哪里的.o文件可以执行吗?
#3
请问已经有了makefile文件,用make命令怎么编译运行一组c文件?
#4
make
#5
我执行make了,就是执行之后生成了一堆.o文件,我记得以前make之后直接可以运行的
#6
你的makefile不对或者是,生成了可执行文件,但是你没发现,比如在其他目录.
把makefile贴上来.
把makefile贴上来.
#7
只生成了.o 文件 还要把.o 文件编译成binary文件
#8
.o能执行才怪呢
#9
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
这个是最终的可执行文件.
有的话运行它.
./checkModules
#11
上面的Makefile的最上面一行应该可以把一堆目标文件链接成可执行文件checkModules吧,去找checkModules执行啊。。
#12
.o文件应该还没有给其中二进制代码没有分配虚拟地址,所以不能载入运行.
#13
要最终编译成可执行文件才行。先通过-c编译成.o文件,然后再通过-o编译成可执行文件。如下:
gcc -c main.c ->生成main.o文件,这个文件是目标文件
gcc -o main main.o->生成main可执行文件
./main->执行
gcc -c main.c ->生成main.o文件,这个文件是目标文件
gcc -o main main.o->生成main可执行文件
./main->执行
#1
.o只是中间文件.
不是可执行文件.
gcc xx.o -o program
./program
不是可执行文件.
gcc xx.o -o program
./program
#2
为什么此.o文件不能执行?
楼主见过哪里的.o文件可以执行吗?
楼主见过哪里的.o文件可以执行吗?
#3
请问已经有了makefile文件,用make命令怎么编译运行一组c文件?
#4
make
#5
我执行make了,就是执行之后生成了一堆.o文件,我记得以前make之后直接可以运行的
#6
你的makefile不对或者是,生成了可执行文件,但是你没发现,比如在其他目录.
把makefile贴上来.
把makefile贴上来.
#7
只生成了.o 文件 还要把.o 文件编译成binary文件
#8
.o能执行才怪呢
#9
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
这个是最终的可执行文件.
有的话运行它.
./checkModules
#11
上面的Makefile的最上面一行应该可以把一堆目标文件链接成可执行文件checkModules吧,去找checkModules执行啊。。
#12
.o文件应该还没有给其中二进制代码没有分配虚拟地址,所以不能载入运行.
#13
要最终编译成可执行文件才行。先通过-c编译成.o文件,然后再通过-o编译成可执行文件。如下:
gcc -c main.c ->生成main.o文件,这个文件是目标文件
gcc -o main main.o->生成main可执行文件
./main->执行
gcc -c main.c ->生成main.o文件,这个文件是目标文件
gcc -o main main.o->生成main可执行文件
./main->执行