我是Gyp的新手。我不想編譯依賴項,而是使用共享庫,特別是我的機器上已有的libsqlite3.so。主要binding.gyp目前看起來像在node-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有一個部分,如下所示。我不認爲我需要gyp來爲我編譯sqlite3,所以將類型切換到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' ]
}
]
}
更新。我能得到的東西通過binding.gyp改變這種
{
'targets': [
{
'target_name': 'node_sqlite3',
'sources': [
'src/database.cc',
'src/node_sqlite3.cc',
'src/statement.cc'
],
'ldflags': [
'-lsqlite3'
]
}
]
}
然而,當我去使用模塊運行程序進行編譯,我得到
node: symbol lookup error: /usr/local/lib/node_modules/sqlite3/build/Release/node_sqlite3.node: undefined symbol: sqlite3_open_v2
彷彿共享庫未加載或無法訪問。我想我很接近。 libsqlite3被安裝到/ usr/local/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
UPDATE2。情節變厚。我嘗試了由node-sqlite3創建的可執行文件ldd
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上面的語法是非常有用的,除了一件事。我不需要使用'-lsqlite3',而需要使用'libcrypto.dylib'和'libssl.dylib'。庫規範中沒有短劃線。 我使用Yosemite,OSX 10.10和Xcode版本6.1.1 – user2246302