【问题标题】:Compiling FLTK program on Mac在 Mac 上编译 FLTK 程序
【发布时间】:2014-12-30 17:47:48
【问题描述】:

我正在尝试在 Mac OSX Mavericks 上编译 FLTK 程序 (http://www.fltk.org/index.php)。所有 .h 包都编译得很好,但我收到以下错误:

ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我尝试了g++clang++ -stdlib=libstdc++ 来编译程序,但两次都收到相同的错误。

我将非常感谢任何关于此问题的意见,以消除此错误消息。

【问题讨论】:

  • 你是如何调用编译器的?什么开关/参数?
  • @Mark Setchell g++ /path/to/file.cxx -I/path/to/fltk-1.3.2 并且还尝试了 clang++ -stdlib=libstdc++ /path/to/file.cxx -I/path/to/fltk-1.3.2 两者都给出了相同的错误。我使用了 -I 标志,如“使用标准编译器编译程序”部分所示:fltk.org/doc-1.1/basics.html
  • 尝试添加这个$(fltk-config --ldflags)
  • 您可以删除 $() 并单独运行它以查看它也为链接器标志提供了什么。
  • @MarkSetchell 这可能有效,但我得到:-bash: fltk-config: command not found。有什么建议吗?

标签: c++ macos fltk


【解决方案1】:

您想使用fltk-config 脚本,但不清楚如何在他们的文档中通常使用它。这是我使用的一般形式以及它实际在做什么:

从命令行你可以像这样编译(假设你需要图像库、opengl 库并希望静态链接 [FLTK 的一半])

g++ file1.cpp file2.cpp `fltk-config --use-forms --use-gl --use-images --ldstaticflags --cxxflags` -o output

这相当于

g++ file1.cpp file2.cpp -I/usr/local/include -I/usr/local/include/FL/images -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_THREAD_SAFE -D_REENTRANT /usr/local/lib/libfltk_images.a /usr/local/lib/libfltk_png.a -lz /usr/local/lib/libfltk_jpeg.a /usr/local/lib/libfltk_gl.a -framework AGL -framework OpenGL -framework ApplicationServices /usr/local/lib/libfltk_forms.a /usr/local/lib/libfltk.a -lpthread -framework Cocoa -o output

因此,如果您确保库位于 /usr/local/lib 中并且 /usr/local/include 中的标头应该可以工作...

fltk-config 只是 fltk-1.3.2(或其他)文件夹中的一个脚本。从 make 文件构建 FLTK 应该将其添加到您的路径中。如果不复制它或将其定向到它所在的任何位置。不过,这确实让我想知道:您确定构建了这些库吗?

【讨论】:

  • 我该怎么做才能让-bash: fltk-config: command not found 正常工作?我使用的命令是g++ /path/to/file.cxx -I/path/to/fltk-1.3.2 $(fltk-config --ldflags)
  • 第一件事:你确定运行make all等并构建库吗?
  • 如果是这样,fltk-config 应该在/usr/local/binusr/local/include 中的 FL/ 和 GL/ 目录中,并且您应该在 usr/local/lib 中拥有像 fltk.a 这样的库。如果您的构建没有出现问题。不要尝试使用编译器链接工具来访问 fltk-config。将其复制到您的密码或将其复制到您的路径(或 /usr/local/bin)。
  • 通过使用 Mark Setchell 对 find / -name "fltk-config" 2> /dev/null 的建议,我什么都没想出来,但是当我这样做时 find / -name "fltk-config.in" 2> /dev/null 我想出了找到 fltk-config.in 的地方,这是一个 Unix 可执行文件文件。然后当我输入:g++ /path/to/fltk-1.3.3/file.cxx -I /path/to/fltk-1.3.3 /path/to/fltk-1.3.3/fltk-config.in --ldflags 我得到错误clang: error: unsupported option '--ldflags'
  • 请阅读我的要求并回答。我 90% 确定你还没有构建 FLTK。您不能只下载 FLTK 并“运行它”。您下载源代码,然后将它们编译成您链接到的库。我怀疑你没有编译它,这就是你有链接错误的原因。我认为是这种情况,因为 fltk-config 是在您构建库时生成的,而您没有它。您需要转到fltk-1.3.2 输入./configure --enable-threads 以及您需要的任何其他选项(请参阅文档)然后sudo make install
猜你喜欢
  • 1970-01-01
  • 2018-08-04
  • 1970-01-01
  • 2013-02-06
  • 1970-01-01
  • 2017-07-07
  • 1970-01-01
  • 2016-01-12
  • 1970-01-01
相关资源
最近更新 更多