這個問題已經出現過很多次了。但我沒有找到答案。
我有這個.cpp檔案
#include <clickhouse/client.h>
#include <iostream>
using namespace clickhouse;
int main(){
/// Initialize client connection.
Client client(ClientOptions().SetHost("localhost"));
client.Select("SELECT l.a, l.b from table", [] (const Block& block)
{
for (size_t i = 0; i < block.GetRowCount(); i) {
std::cout << block[0]->As<ColumnUInt64>()->At(i) << " "
<< block[1]->As<ColumnString>()->At(i) << "\n";
}
}
);
return 0;
}
我已經實體化了 SO 庫,就像在這里寫的一樣。之后我得到了以下結構/usr/local/lib directory:
~/$ ls /usr/local/lib
>>libclickhouse-cpp-lib-static.a libclickhouse-cpp-lib.so
在下一步中,我嘗試執行編譯g
~/$ g run.cpp -std=c 17 -o result -llibclickhouse-cpp-lib -L/usr/local/lib
>>/usr/bin/ld: cannot find -llibclickhouse-cpp-lib
>>collect2: error: ld returned 1 exit status
我不知道是什么阻礙了創建鏈接。
謝謝您的幫助!
uj5u.com熱心網友回復:
ld的手冊頁對-l選項的描述如下(不相關的細節省略):
-l 名稱規范
--library=namespec
將 namespec 指定的存檔或目標檔案添加到要鏈接的檔案串列中。[...] ld 將在目錄中搜索名為 libnamespec.so 的庫
如果您仔細閱讀本文,您將得出結論,即-llibclickhouse-cpp-lib搜索ld一個名為的庫,該庫liblibclickhouse-cpp-lib.so顯然不存在。
這應該只是-lclickhouse-cpp-lib.
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/437751.html
上一篇:如何在運行時在C 中創建引數串列以將其傳遞給模板函式(...,Ts&&...值),如InsertOrUpdateMutationBuilder
