【发布时间】:2010-10-12 20:18:03
【问题描述】:
我有一些静态库。例如 libpuchuu.a 它取决于动态库。例如 libSDL.so (但当然我有 libSDL.a) 创建 libpuchuu.a 很简单:
ar -rcs object_file_1.o object_file_2.o
但我无法将我的项目与 libpuchuu.a 链接! 未定义的引用攻击我的控制台!
在某个论坛我发现了这样一句话: 静态库的所有依赖都在这个库中 如果你的目标文件依赖于 y.a 你必须 unpack(ar) y.a 目标文件 到您的文件夹,然后将所有对象打包到新库中。问题:
- 是真的吗?
- 如果是真的: 目标文件 puchuu.o 依赖于 libSDL.a 如何制作 libpuchuu.a?
- 另一种解决方案?
PS
我做了一个简单的例子,贴到pastebin:
http://paste.lisp.org/display/115456
构建命令:
g++ -O3 -c index.cpp -I/usr/local/include/SDL
g++ -O3 -c lib.cpp -I/usr/local/include/SDL
ar rv libpuchuu.a lib.o
g++ -O3 -o program.exe index.o -L/usr/local/lib -lmingw32 -lSDLmain -lSDL -mwindows -lSDL_image -L. -lpuchuu
... 来自 index.cpp 的未定义引用!
【问题讨论】:
-
您应该详细说明会出现哪些未定义的引用。这可能会导致共享对象丢失。
-
能否请您将其包含为文本而不是图像?
-
哦,伙计,那里有一个关于 sdldraw 的俄罗斯警告! (那应该很糟糕!):)
-
我认为我无法打开 7z 文件。
-
是的,我来自白俄罗斯。但所有的钱都在我们身上。我们应该试着写和说英语! ^_w_^
标签: c++ c build mingw gnu-make