我想使用ubuntu从C文件创建二进制文件。我做了这样的事情:在Ubuntu上创建二进制文件
gcc -c ArrayError3.c -o ArrayError3.
这会在我的桌面上创建一个文件ArrayError3。当我点击它时,ubuntu告诉我没有为目标文件安装应用程序。我非常喜欢C和linux。任何人都可以请告诉我如何解决这个问题?非常感谢。
我想使用ubuntu从C文件创建二进制文件。我做了这样的事情:在Ubuntu上创建二进制文件
gcc -c ArrayError3.c -o ArrayError3.
这会在我的桌面上创建一个文件ArrayError3。当我点击它时,ubuntu告诉我没有为目标文件安装应用程序。我非常喜欢C和linux。任何人都可以请告诉我如何解决这个问题?非常感谢。
只需删除-c
,以便在制作目标文件后不会停止。 -c
选项告诉gcc
不运行链接器。如果省略它,gcc会为你制作一个完整的可执行文件。
您需要阅读更多关于GCC参数的含义。 -c
选项告诉GCC创建一个目标文件,而不是一个可执行文件。这个目标文件需要被链接来创建一个可执行文件。
这是常用的,当你有几个源文件需要链接在一起,形成一个可执行文件。例如:
$ gcc source1.c -c -o source1.o
$ gcc source2.c -c -o source2.o
$ gcc source1.o source2.o -o exec
为您解决方案它根本不使用-c
选项。
的问题是在
gcc -c
-c开关让GCC不是你的代码链接到一个实际的可执行文件,只有它编译成一个object file,这是不是一个“完整”的格式,它不能然后运行。只使用
gcc ArrayError3.c -o ArrayError3
改为。
这是否构成静态或动态二进制文件?我问的原因是因为我的大学学者告诉我在这个二进制文件上运行zzuf(一个应用程序输入模糊器)。我碰巧知道zzuf不适用于静态二进制文件。另一个问题是zzuf是应用程序输入模糊器(默认情况下输入是文件)。有问题的应用程序只能从控制台获取用户输入。 – 2012-08-10 09:09:37
@EShindler只要你不传递任何'-static'参数,你应该可以。 – cnicutar 2012-08-10 09:18:47