2016-08-07 14 views
0

Crystal Langの開発をOSX El-Capitanを実行している新しいマシンに移行しています。Crystal Lang:OSX El CapitanのMySQLライブラリでアプリケーションをコンパイルできません

私は、MySQLバインディングでアプリケーションをコンパイルする問題が発生した、結晶コンパイラは、このエラーがスローされます。

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

打ち鳴らす:エラー:リンカコマンドは、呼び出しを確認するために、終了コード1(使用-vで失敗しました)

OSXの以前のバージョンでは
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` 

、私が行うために必要なすべてがそうシンボリックリンクにし、それはトリックを行います。

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

残念ながら、エルキャピタンが、これはこれが/ usr/local/mysql/libに/(今私が使用していますV20は、18のinsted注)

libmysqlclient.20.dylib libmysqld-debug.a mecab 
libmysqlclient.a libmysqld.a  pkgconfig 
libmysqlclient.dylib libmysqlservices.a plugin 
の内容です

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

ことは不可能です

私はXCodeに固有のinstall_name_toolを使用することについていくつかのアイデアを見てきました。

誰かがエルキャピタンに移住して、光を放つことができますか?これを行うにはどうすればよいでしょうか?

答えて

2

システムの完全性の保護により、そこにシンボリックリンクを作成することはできません。しかし、これは実際には必ずしも必要ではありません。

あなたのMySQLライブラリがインストールされているフォルダを "ライブラリ検索パス"ビルド設定に追加するだけです(またはXcodeビルドシステムのadd -Lリンカオプションをパスに使用しない場合)。 "/ usr/lib"と "/ usr/local/lib"をそこに追加しましたが、あなたのMySQLライブラリは "/ usr/local/mysql/lib"にあり、リンカはそれを見つけることができません。

この場合、install_name_toolは必要ありません。これにより、実行時にライブラリを探すためにローダーが使用するパスが変更される可能性があります。

+1

もう1つの方法は、 'LIBRARY_PATH'環境変数を設定することです。 Crystalの場合、 '-L'フラグは' --link-flags'オプションを介して 'crystal build'に渡すことができます。自家製のものや、MySQLをインストールしたものが、ここで修正することができないのだろうか? –

関連する問題