【发布时间】:2013-05-14 21:08:15
【问题描述】:
我是 g++ 新手,在 LINUX 中编译我的 C++ 代码。 我正在尝试使用 g++ 将几个 .o 文件连接为 .lib。
这是我使用“g++ -o ../fuzzy/fuzzy.lib example1.o example2.o”的命令并得到了这个错误。即使我尝试连接单个目标文件并制作 .lib,它也不起作用。
非常感谢您的帮助。
谢谢
【问题讨论】:
我是 g++ 新手,在 LINUX 中编译我的 C++ 代码。 我正在尝试使用 g++ 将几个 .o 文件连接为 .lib。
这是我使用“g++ -o ../fuzzy/fuzzy.lib example1.o example2.o”的命令并得到了这个错误。即使我尝试连接单个目标文件并制作 .lib,它也不起作用。
非常感谢您的帮助。
谢谢
【问题讨论】:
要制作静态库,请使用ar:
ar rcs mylibrary.a a.o b.o c.o
要创建共享库,请使用gcc 链接:
gcc -o mylibrary.so -shared a.o b.o. c.o
【讨论】:
g++ -o nervolver example.cpp mylibrary.a
如果您尝试构建库,选项取决于您要构建静态库还是共享库。例如,
# shared library
g++ -shared -o name.so obj1.o obj2.o obj3.o
静态库本质上是一个存档,您可以使用ar 命令从.o 文件构建它。
ar <options> mylib.a obj1.o obj2.o obj3.o
如果你试图编译一个目标文件,你需要传递-c 选项:
g++ -c ....
否则,g++ 会尝试编译可执行文件,这需要 main function。
【讨论】:
-fpic 不是也必须传递给每个编译步骤吗?