Ubuntu 基于gcc的静态和动态链接
我在项目中使用lib3ds和opengl。若要从此项目生成可执行文件,我无法链接这些库 我使用将lib3ds链接到g++上的以下命令:Ubuntu 基于gcc的静态和动态链接,ubuntu,opengl,gcc,linker,Ubuntu,Opengl,Gcc,Linker,我在项目中使用lib3ds和opengl。若要从此项目生成可执行文件,我无法链接这些库 我使用将lib3ds链接到g++上的以下命令:g++-o exec object.o--static-l3ds 我使用opengl链接:g++-o exec object.o-lGL 我想在同一个命令中链接两个库。如果我尝试-lGL--static-l3ds,编译器会说/usr/bin/ld:找不到-lGL 如何解决这个问题?-static要求编译器生成静态二进制文件,而没有任何指向动态库的链接。您要使用的是
g++-o exec object.o--static-l3ds
我使用opengl链接:g++-o exec object.o-lGL
我想在同一个命令中链接两个库。如果我尝试-lGL--static-l3ds
,编译器会说/usr/bin/ld:找不到-lGL
如何解决这个问题?
-static
要求编译器生成静态二进制文件,而没有任何指向动态库的链接。您要使用的是-b静态
和-b动态
链接器选项:
g++ -o exec object.o -Wl,-Bstatic -l3ds -Wl,-Bdynamic -lGL
-static
要求编译器生成静态二进制文件,而不需要任何指向动态库的链接。您要使用的是-b静态
和-b动态
链接器选项:
g++ -o exec object.o -Wl,-Bstatic -l3ds -Wl,-Bdynamic -lGL
/usr/xxx/lib3ds.a-lGL很好用 /usr/xxx/lib3ds.a-lGL很有用 你试过把-lGL放在命令的末尾吗?你试过把-lGL放在命令的末尾吗?我没有为我工作。g++-o exec object.o-Bdynamic-lGL,-Bstatic-l3ds/usr/bin/ld:找不到-lGL,您忘记了
-Wl,
。另外,最好在static之后使用-Wl,-Bdynamic
,否则链接器将尝试使用static libgcc、libc等。我不为自己工作。g++-o exec object.o-Bdynamic-lGL,-Bstatic-l3ds/usr/bin/ld:找不到-lGL,您忘记了-Wl,
。另外,最好在static之后使用-Wl,-Bdynamic
,否则链接器将尝试使用static libgcc、libc等。您是否可以预先捕获并扩展您的答案,以使其更清楚地显示最终什么命令对您有效?现在有点模糊。你能把你的答案扩展一下,让它更清楚地说明到底什么命令对你有用吗?现在有点模糊。