【问题标题】:Static and dynamic linking on gccgcc 上的静态和动态链接
【发布时间】:2015-07-28 06:11:18
【问题描述】:

我在我的项目中使用 lib3ds 和 opengl。要从此项目生成可执行文件,我无法链接这些库。

我用来在 g++ 上链接 lib3ds 下面的命令:g++ -o exec object.o --static -l3ds 我用来链接opengl:g++ -o exec object.o -lGL

我想在同一个命令中链接两个库。如果我尝试-lGL --static -l3ds,编译器会说/usr/bin/ld: cannot find -lGL

我该如何解决这个问题?

【问题讨论】:

  • 你试过把 -lGL 放在你的命令末尾吗?

标签: ubuntu opengl gcc linker


【解决方案1】:

-static 要求编译器生成静态二进制文件,根本没有任何指向动态库的链接。您要使用的是-Bstatic-Bdynamic 链接器选项:

g++ -o exec object.o -Wl,-Bstatic -l3ds -Wl,-Bdynamic -lGL

【讨论】:

  • 我没有为我工作。 g++ -o exec object.o -Bdynamic -lGL, -Bstatic -l3ds/usr/bin/ld: 找不到 -lGL,
  • 你忘记了-Wl,。另外,最好使用-Wl,-Bdynamic static,否则链接器会尝试使用静态libgcc、libc等。
【解决方案2】:

/usr/xxx/lib3ds.a -lGL 有效!

【讨论】:

  • 您能否预先扩展您的答案以更明确地说明最终哪个命令对您有用?目前有点模糊。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-27
  • 2010-10-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多