Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ubuntu 基于gcc的静态和动态链接_Ubuntu_Opengl_Gcc_Linker - Fatal编程技术网

Ubuntu 基于gcc的静态和动态链接

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要求编译器生成静态二进制文件,而没有任何指向动态库的链接。您要使用的是

我在项目中使用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
要求编译器生成静态二进制文件,而没有任何指向动态库的链接。您要使用的是
-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等。您是否可以预先捕获并扩展您的答案,以使其更清楚地显示最终什么命令对您有效?现在有点模糊。你能把你的答案扩展一下,让它更清楚地说明到底什么命令对你有用吗?现在有点模糊。