这与Linux杂志文章中提到的编译步骤有关。
本文使用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.sld -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_worldas 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)发布于 2020-03-11 03:28:18
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.shttps://stackoverflow.com/questions/60628786
复制相似问题