'C程序的'正确的编译器'命令
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了'C程序的'正确的编译器'命令相关的知识,希望对你有一定的参考价值。
这与Linux Journal article中提到的编译步骤有关。
该文章中使用cpp
,cc1
,as
和ld
命令编译了C程序。我可以使用cpp,as和ld执行步骤。但是cc1会引发错误。
cpp hello_new_world.c -o hello_new_world.i
由于我无法使用cc1:
gcc -S hello_new_world.i -o hello_new_world.s
ld -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -lc -lgcc -lgcc_s /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o hello_new_world.o -o hello_new_world
as hello_new_world.s -o hello_new_world.o
即使我可以使用gcc
开关-E
,-S
和-c
开关执行编译步骤,在最新的gcc中是否有任何命令替换了cc1
?或如何使用专用命令正确地执行编译器?
$ cc1 hello_new_world.i -o hello_new_world.s
Command 'cc1' not found, did you mean:
command 'cct' from deb proj-bin (5.2.0-1)
command 'ccr' from deb codecrypt (1.8-1)
command 'ccx' from deb calculix-ccx (2.11-1build2)
command 'cc' from deb gcc (4:9.2.1-3.1ubuntu1)
command 'cc' from deb clang (1:9.0-49~exp1)
command 'cc' from deb pentium-builder (0.21ubuntu1)
command 'cc' from deb tcc (0.9.27-8)
command 'ccs' from deb unanimity (3.3.0+dfsg-2.1)
答案
cc1
由gcc
内部使用,通常不在您的路径中。您可以询问gcc它在哪里:
$ gcc -print-prog-name=cc1
/usr/lib/gcc/x86_64-linux-gnu/7/cc1
或gcc使用的整个命令行:
$ gcc -v hello.c |& grep cc1
/usr/lib/gcc/x86_64-linux-gnu/7/cc1 -quiet -v -imultiarch x86_64-linux-gnu hello.c -quiet -dumpbase hello.c -mtune=generic -march=x86-64 -auxbase hello -version -fstack-protector-strong -Wformat -Wformat-security -o /tmp/ccekuiEJ.s
以上是关于'C程序的'正确的编译器'命令的主要内容,如果未能解决你的问题,请参考以下文章
keil编译C程序时出现了这样的错误,不知道怎么解决?(高分悬赏)
如何用c语言编一个函数 实现字符串作参数传递,给个编译过的程序