から共有ライブラリを見つけることができない、私は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
コンパイルとリンクが成功し、結果として得られる実行可能ファイルは期待通りに動作します。
私の欠点は何ですか?
私は試してみましたが、残念ながらそれはうまくいきませんでした。 '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
このメッセージは、フル私は次に、odbcライブラリへのフルパスを試しました:swift build -Xlinker /usr/local/lib/libodbc.dylib。これにより、 "ファイルをマップできません"というエラーはなくなりましたが、元の投稿のエラーが返されました。 – Chris
残念だったはずです: '-Xlinker -L/usr/local/lib' – mxcl