Gypを初めて使用しました。私の依存関係をコンパイルするのではなく、共有ライブラリ、特に私のマシン上にあるlibsqlite3.soを使用したいと思います。メインバインディング.gypは現在のように見えますノード-sqlite3のGypで共有ライブラリを使用する
{
'targets': [
{
'target_name': 'node_sqlite3',
'sources': [
'src/database.cc',
'src/node_sqlite3.cc',
'src/statement.cc'
],
'dependencies': [
'deps/sqlite3/binding.gyp:sqlite3'
]
}
]
}
共有sqlite3ライブラリを使用するように変更するにはどうすればよいですか? depsフォルダのbinding.gypには、以下のようなセクションがあります。私は私のためにsqlite3のコンパイルを行うためにgypが必要だとは思わないので、shared_libraryにタイプを切り替えることはおそらく正しい答えではありません。
'targets': [
{
'target_name': 'sqlite3',
'type': 'static_library',
'include_dirs': [ '.' ],
'direct_dependent_settings': {
'include_dirs': [ '.' ],
'defines': [
'SQLITE_THREADSAFE=1',
'SQLITE_ENABLE_FTS3',
'SQLITE_ENABLE_RTREE'
],
},
'defines': [
'_REENTRANT=1',
'SQLITE_THREADSAFE=1',
'SQLITE_ENABLE_FTS3',
'SQLITE_ENABLE_RTREE'
],
'sources': [ './sqlite3.c', ],
},
{
'target_name': 'shell',
'type': 'executable',
'dependencies': [ 'sqlite3' ],
'sources': [ './shell.c' ]
}
]
}
更新。私はモジュールを使用してプログラムを実行するために行くとき、しかし、この
{
'targets': [
{
'target_name': 'node_sqlite3',
'sources': [
'src/database.cc',
'src/node_sqlite3.cc',
'src/statement.cc'
],
'ldflags': [
'-lsqlite3'
]
}
]
}
にbinding.gypによって変更することにより、コンパイルに物事を得ることができた、私は共有かのよう
node: symbol lookup error: /usr/local/lib/node_modules/sqlite3/build/Release/node_sqlite3.node: undefined symbol: sqlite3_open_v2
を取得しますライブラリがロードされていないか、アクセスできません。私は近くにいると思う。 libsqlite3は、/ usr//ローカルlibの
/usr/local/lib$ ls libsqlite3.a libsqlite3.so libsqlite3.so.0.8.6 node_modules python2.7 libsqlite3.la libsqlite3.so.0 node pkgconfig
アップデート2にインストールされました。プロットが濃くなります。私はlddをnode-sqlite3によって作成された実行ファイルで試しました。
linux-vdso.so.1 => (0x00007fffd7168000) libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fc9451df000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fc944fc2000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc944c04000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fc94490a000) /lib64/ld-linux-x86-64.so.2 (0x00007fc945704000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fc9446f4000)
明らかにlibsqlite3がありません。だからおそらく私のldflagsステートメントは実際には計画どおりには機能しませんでした。
は、私は、SSLと暗号ライブラリのサポートを追加する必要がありました。私はtofutimの上記の構文が1つのことを除いて非常に有用であることを発見しました。 '-lsqlite3'を使う代わりに、 'libcrypto.dylib'と 'libssl.dylib'を使う必要がありました。ライブラリ仕様にはダッシュが必要ありませんでした。 Xcodeバージョン6.1.1でヨセミテ、OSX 10.10を使用しています – user2246302