我正在将Crystal Lang开发迁移到一台运行OSX El-Capitan的新机器上。
我遇到了一个问题,当使用MySQL绑定编译应用程序时,crystal编译器抛出以下错误:
$ crystal build src/test1.cr
ld: library not found for -lmysqlclientclang:错误:链接器命令失败,退出代码为%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不幸的是,El Capitan,这是不可能的
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的想法。
移民到埃尔卡皮坦的人能给我们一些启发吗?做这件事最好的方法是什么?
发布于 2016-08-07 20:19:04
由于系统完整性保护,您不能在那里创建符号链接。但这实际上并不是必须的。
只需将安装MySQL库的文件夹添加到“库搜索路径”构建设置中(或者,如果您没有使用带有路径的Xcode构建系统添加-L链接器选项)。您在其中添加了"/usr/lib“和"/usr/local/lib”,但您的MySQL库位于"/usr/local/mysql/lib“中,因此链接器找不到它。
在这种情况下,install_name_tool是不必要的。这可能会改变加载器在运行时用来查找库的路径。
https://stackoverflow.com/questions/38810545
复制相似问题