【问题标题】:Nauty and Traces on Mac OS XMac OS X 上的恶作剧和痕迹
【发布时间】:2015-11-05 17:13:48
【问题描述】:

我正在尝试使用代码 Nauty and Traces http://pallini.di.uniroma1.it/。但是当我编译一个例子时,比如nautyex8.c(由包提供),出现了以下错误:

架构 x86_64 的未定义符号: “_alloc_error”,引用自: _main 在 nautyex8-54d9da.o “_densenauty”,引用自: _main 在 nautyex8-54d9da.o “_dispatch_graph”,引用自: nautyex8-54d9da.o 中的 _main.options “_nauty_check”,引用自: _main 在 nautyex8-54d9da.o ld:未找到架构 x86_64 的符号 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

我正在使用 Mac OS X Yosemite (10.10.5) 和 Xcode(7.1 版)。我相信代码中没有错误,因为它们被广泛使用,所以我猜问题出在我的系统设置上。

非常感谢!

【问题讨论】:

  • 与其尝试从头开始构建这样的东西,只需安装一个像样的包管理器,例如Homebrew,那么只需输入sudo brew install nauty即可。
  • 这些错误来自链接器,表明您缺少库。您需要在命令行中指定库,假设该库适用于 Mac OS X。
  • @PaulR:不幸的是,brew install nauty 不起作用;没有这样的公式。所以 OP 选择在本地构建它并不完全是疯狂的。

标签: c xcode macos


【解决方案1】:

我刚刚打开了一个拉取请求以使 brew install nauty 在 OS X 上工作:https://github.com/Homebrew/homebrew-core/pull/48701

在此之前,您将在 OS X 上构建 nautyex8.c,从 Nauty/Traces 2.6r12 开始。
第 1 步是下载代码并构建库:

wget http://pallini.di.uniroma1.it/nauty26r12.tar.gz
tar zxvf nauty26r12.tar.gz
cd nauty26r12
./configure
make
ls -l nauty.a

第 2 步是编译 nautyex8.c 并将其链接到您刚刚构建的库

gcc -O3 nautyex8.c nauty.a
./a.out

您可能忘记将“nauty.a”放在编译器命令行的末尾。如果我也这样做,我会得到:

gcc -O3 nautyex8.c
Undefined symbols for architecture x86_64:
  "_alloc_error", referenced from:
      _main in nautyex8-05f086.o
  "_densenauty", referenced from:
      _main in nautyex8-05f086.o
  "_dispatch_graph", referenced from:
      _main.options in nautyex8-05f086.o
  "_nauty_check", referenced from:
      _main in nautyex8-05f086.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

完全符合你描述的症状。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-31
    • 1970-01-01
    • 2010-09-23
    • 1970-01-01
    • 2017-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多