2016-04-13 9 views
0

から共有ライブラリを見つけることができない、私はunixODBCの2.3.4ため迅速ラッパーを統合しようとしていますが、ビルドが有するリンカーの段階で失敗します次のエラー:のOS Xは、迅速なビルドパッケージマネージャは、OS XエルキャピタンにunixODBCのC依存性

ld: library not found for -lodbc.2 for architecture x86_64

私はすぐにインストールされ、ライブラリが実際に64ビットであることを確認した:私のために

file /usr/local/lib/libodbc.dylib 
/usr/local/lib/libodbc.dylib: Mach-O 64-bit dynamically linked shared library x86_64 

このプロジェクトは、私は迅速パッケージマネージャを利用していますので、私は迅速用の最新の開発・ビットをインストールし、私のPATH環境変数にそのbinフォルダを先頭に追加している:

export PATH=/Library/Developer/Toolchains/swift-latest.xctoolchain/usr/bin:$PATH

私はのunixODBC 2.3.4 をインストールhomebrewを使用して、postegresqlデータベースにアクセスするために必要なodbcinst.iniファイルとodbc.iniファイルを作成しました。 unixODBCに含まれているisqlユーティリティーを使用してリモート・データベースに接続することにより、ODBCのインストールと構成が正しいことを確認しました。私はCunixODBCへの依存を確立し、私のswiftodbcプロジェクトで

module CunixODBC [system] { 
    header "/usr/local/Cellar/unixodbc/2.3.4/include/unixodbc_conf.h" 
    header "/usr/local/Cellar/unixodbc/2.3.4/include/sql.h" 
    header "/usr/local/Cellar/unixodbc/2.3.4/include/sqltypes.h" 
    link "odbc" 
    export * 
} 

新しくインストールされたunixODBCの共有ライブラリを参照して、以下のmodule.modulemapファイルを作成し、私のCunixODBC迅速プロジェクト、私のパッケージで

.swiftファイルは:

import PackageDescription 

let package = Package(
    dependencies: [ 
     .Package(url: "../CunixODBC", versions: Version(0,0,4)..<Version(1,0,0)) 
    ] 
) 

unixODB Cが正しく機能していれば、小さなテストプログラムをCに書き、unixODBC共有ライブラリにリンクしました。私のコンパイル文字列は次のとおりです。

cc -L/usr/local/lib -I/usr/local/Cellar/unixodbc/2.3.4/include -lodbc odbctest.c -o odbctest 

コンパイルとリンクが成功し、結果として得られる実行可能ファイルは期待通りに動作します。

私の欠点は何ですか?

答えて

2

swift buildインスタンスに-Xlinker -L/usr/local/libを追加してみてください。

+0

私は試してみましたが、残念ながらそれはうまくいきませんでした。 'swift build -Xlinker/usr/local/lib swiftodbcをリンクしています ld:ファイルをマップできません、errno = 22ファイル '/ usr/local/lib' for architecture x86_64 :0 :エラー:リンクコマンドは終了コード1で失敗しました(呼び出しには-vを使用します) :0:エラー:ビルドに1つのコマンドが失敗しました エラー:exit(1):/ライブラリ/ Developer/Toolchains/swift-DEVELOPMENT-SNAPSHOT -2016-03-01-a.xctoolchain/usr/bin/swift-build-tool -f /Users/cwhelan/development/swift/swiftodbc/.build/debug.yaml default ' – Chris

+0

このメッセージは、フル私は次に、odbcライブラリへのフルパスを試しました:swift build -Xlinker /usr/local/lib/libodbc.dylib。これにより、 "ファイルをマップできません"というエラーはなくなりましたが、元の投稿のエラーが返されました。 – Chris

+0

残念だったはずです: '-Xlinker -L/usr/local/lib' – mxcl

関連する問題