【发布时间】:2016-08-24 14:20:06
【问题描述】:
我正在编写一个大致如下所示的程序:
- src/中的一些主要代码
- Demo1/中的一些代码
我将 Demo1 的内容编译成 .o,然后是 .so,并在创建主可执行文件时使用该 .so。 (Demo1的代码在src/中)。
Demo1 使用了一个已经编译好的库 lib1,它与它的二进制文件和源代码位于一个单独的文件夹中。
这就是我构建 Demo1 的方式:
gcc -c -fpic Demo1/src/*.c -Ilib1/include -o Demo1/build/demo1.o
gcc -shared Demo1/build/demo1.o -Llib1/lib -llib1 -o Demo1/dist/libDemo1.so
现在我向 Demo1 添加了一个新的 .c 文件和一个新的 .h,然后在我运行构建脚本(其中包含上面的两个命令等)时发生了这种情况:
gcc: 致命错误:无法将 -o 与 -c、-S 或 -E 与多个文件一起指定
这是什么意思?我认为添加源文件不会导致这种情况..
当然,我过去一直在同一行上使用-c 和-o,除此之外-句子的最后一部分在语法上对我来说不是最清楚的......(这是否意味着我可以' t 指定 -o 和 {-E 当 -E 有多个文件})?
我在 Ubuntu 14.04 机器上运行 gcc 4.8.4。
提前致谢。
【问题讨论】:
-
gcc 的手册页具体有什么不明白的地方?您是否查看了您使用的选项?它们是什么意思?
-
如果您以前只有一个源文件,而现在有两个,那么肯定会导致这种情况。你认为它想做什么?
标签: c gcc linker shared-libraries compiler-flags