作者laughingman (笑面男)
看板C_and_CPP
標題[問題] C++ DataFrame 編譯問題
時間Tue Mar 26 22:59:55 2024
開發平台(Platform): (Ex: Win10, Linux, ...)
Linux
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
g++ (GCC) 14.0.1 20240306
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
https://github.com/hosseinmoein/DataFrame 這個開源專案的函式庫
問題(Question):
我是使用vcpkg來安裝這個函式庫的,我確定libDataFrame.a有被放到
/home/vcpkg/installed/x64-linux/lib,但在我用底下指令編譯:
g++ main.cpp -o main -I /home/vcpkg/installed/x64-linux/include/ -L /home/vcpkg/installed/x64-linux/lib/ -lDataFrame --std=c++23
得到以下錯誤資訊:
/opt/rh/devtoolset-7/root/usr/bin/ld: /tmp/ccSFiQME.o: undefined reference to symbol 'pthread_create@@GLIBC_2.2.5'
//lib64/libpthread.so.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
我以為是我的ld版本太舊的關係,所以在編譯的時候加上-Wl,-fuse-ld=/opt/rh/devtoolset-11/root/bin/ld,
但編譯的時候似乎還是使用/opt/rh/devtoolset-7/root/usr/bin/ld 這個linker,
所以我的問題有兩個,這個錯誤訊息真的是因為我的ld版本的關係嗎?還是有其他原因?
如果是版本的關係,我要如何使用新版的ld,
如果有知道的大神,請救救小弟,感謝感謝!
--
生死去來,棚頭傀儡,一線斷時,落落磊磊。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.34.48.174 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1711465240.A.F3F.html
推 lc85301: 怎麼感覺是要加 -lpthread 03/26 23:05
→ Lipraxde: undefined reference to symbol 'pthread,少 link pth 03/27 00:09
→ Lipraxde: read 03/27 00:09
→ Lipraxde: 可能那個 DataFrame 有用到,它看起來有提供 CMake pac 03/27 00:12
→ Lipraxde: kage,建議使用 CMake 去生 make,比較不會漏東西 03/27 00:12
推 melsonlai: 1. gcc 可以下 -v,它會把實際上執行了什麼指令印出來 03/27 20:31
→ melsonlai: ,可以看 linker 有沒有拿到 -lpthread 03/27 20:31
→ melsonlai: 2. -fuse-ld 是 gcc driver 層的 option,不用透過 -W 03/27 20:31
→ melsonlai: l 去使用。-Wl 是拿來傳參數給 linker 的。 03/27 20:31
→ melsonlai: 3. 有 @@ 的 symbol 是 versioned symbol,可以看一下 03/27 20:31
→ melsonlai: linker 用的 glibc/pthread 是不是夠新的版本 03/27 20:31
推 Dracarys: 你如果要portable,最好別-lpthread而是-pthread讓comp 03/28 02:22
→ Dracarys: iler driver去判斷,不過這種事最好還是交給CMake。然 03/28 02:22
→ Dracarys: 後除了樓上說的之外,-Wl後面能接什麼還得看driver用的 03/28 02:22
→ Dracarys: linker有沒有支援,比如macOS上ld64/ld64.lld 就跟GNU 03/28 02:22
→ Dracarys: ld/ld.lld很不同,這個都能透過CMake在configure time 03/28 02:22
→ Dracarys: 確認 03/28 02:22
→ laughingman: 感謝各位大神的建議,我先試看看用CMake的方式好了。 03/28 18:31