1

我正在将 Crystal Lang 开发迁移到运行 OSX El-Capitan 的新机器中。

我遇到了一个问题,在使用 MySQL 绑定编译应用程序时,水晶编译器会抛出此错误:

$ crystal build src/test1.cr 
ld: library not found for -lmysqlclient

clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

Error: execution of command failed with code: 1: `cc -o "/Users/james/cprojects/test1/test1" "${@}"  -rdynamic  -lmysqlclient -lpcre -lgc -lpthread /usr/local/Cellar/crystal-lang/0.18.7_1/src/ext/libcrystal.a -levent -liconv -ldl -L/usr/lib -L/usr/local/lib`

在以前的 OSX 版本中,我需要做的就是创建一个符号链接,它可以解决问题:

ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

不幸的是,埃尔卡皮坦,这是不可能的

ln: /usr/lib/libmysqlclient.18.dylib: Operation not permitted

这是 /usr/local/mysql/lib/ 的内容(请注意,现在我使用的是 v20 insted of 18)

libmysqlclient.20.dylib libmysqld-debug.a   mecab
libmysqlclient.a    libmysqld.a     pkgconfig
libmysqlclient.dylib    libmysqlservices.a  plugin

我已经看到了一些关于使用特定于 XCode 的 install_name_tool 的想法。

迁移到 El Capitan 的任何人都可以提供一些启示吗?最好的方法是什么?

4

1 回答 1

2

由于系统完整性保护,您无法在那里创建符号链接。但这无论如何都不是必需的。

只需将安装 MySQL 库的文件夹添加到“库搜索路径”构建设置中(或者如果您不使用 Xcode 构建系统,请在路径中添加 -L 链接器选项)。您在那里添加了“/usr/lib”和“/usr/local/lib”,但是您的 MySQL 库在“/usr/local/mysql/lib”中,因此链接器找不到它。

对于这种情况 install_name_tool 不是必需的。这可以更改加载程序在运行时用于查找库的路径。

于 2016-08-07T12:19:04.373 回答