Lỗi linker liên quan đến Compiler/linker và static library

Mình đang build một chương trình C++ có sử dụng framework NCNN từ Tencent trong CodeBlock, Raspberry Pi 64-bit OS. Hiện đang gặp một lỗi về linker, hai cách cấu hình sẽ gặp 2 lỗi khác nhau. Mình đã tìm hiểu 2 hôm về compiler/linker và static library nhưng vẫn chưa có kết quá. Các files mình cũng đã kiểm tra kỹ vị trí, chương trình này và các cấu hình mình cũng đã thực hiện lại nhưng chưa có kết quả.
Rất mong được bạn giúp đỡ…

Đây là trường hợp thứ 2,

nó bảo libncnn.a kia incompatible/in wrong format là ko đúng với compiler gì đấy :V bạn down từ nguồn nào về ra cái lib này đây :V

edit: chắc là từ đây hả https://github.com/Tencent/ncnn/wiki/how-to-build#build-for-linux

có thể là quên dòng này lúc build libncnn:
For Rasberry Pi 3, add -DCMAKE_TOOLCHAIN_FILE=../toolchains/pi3.toolchain.cmake -DPI3=ON to cmake.

5 Likes

Mình đang dùng raspberry pi 4B, bullseye 64bit và opencv tham khảo từ https://qengineering.eu/opencv-c-examples-on-raspberry-pi.html.
Web này cũng mới update cách đây vài tháng, thư việnNCNN họ cũng đã build sẵn rồi, mình tải về thì lỗi như vậy.
Ở Wed họ cũng chỉ cách tự build, https://qengineering.eu/install-ncnn-on-raspberry-pi-4.html
Khi tự build thì các option được chọn là cmake -D NCNN_DISABLE_RTTI=OFF -D CMAKE_TOOLCHAIN_FILE=../toolchains/aarch64-linux-gnu.toolchain.cmake .. Mình cũng đã tự build nhưng build xong thì cũng k dùng được, lỗi là không undefined reference tới một hàm. Tìm các sửa lỗi thì họ chỉ dẫn thế này, còn lại toàn tiếng Trung (tại vì framework này từ Tencent)

Mình cũng thử build lại thư viện theo option này cmake -D NCNN_DISABLE_RTTI=OFF -D CMAKE_EXE_LINKER_FLAGS=-lncnn -D CMAKE_TOOLCHAIN_FILE=../toolchains/aarch64-linux-gnu.toolchain.cmake ..
thì nó hiện ra lỗi như thế này image
Tại vì mình cũng chưa hiểu rõ quá trình sử dụng command line để build một thư viện và cách chỉ dẫn cho compiler hiểu, nên không chắc là lỗi sai nằm ở đâu.

bỏ dòng này đi

lỗi gì copy lên đây :V

gcc -v xem gcc có đúng là gcc cho aarch 64-bit ko :V

3 Likes

Mình vừa build được rồi nha,
Vấn đề ở chỗ linker, cần chỉ dẫn bổ sung và phải thêm flag này -D CMAKE_EXE_LINKER_FLAGS=-ldl lúc build thư viện.
Cảm ơn bác đã quan tâm

6 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?