Tôi đang biên dịch một số mã nguồn yêu cầu một số dylib từ dự án khác mà tôi đã xây dựng. Tôi nhận đượcCách biên dịch nguồn sử dụng đường dẫn dylib trên macOS Sierra từ vỏ
ld: biểu tượng (s) không tìm thấy cho kiến trúc x86_64`
Bất cứ khi nào tôi thực hiện
g++ some_code.cpp -I/usr/local/include -o executable_binary
Tôi biết rằng g++
không có khả năng tìm ra biên soạn dylibs (cài đặt tại /usr/local/include
) kể từ khi lỗi cũng đề cập đến rất nhiều biểu tượng cụ thể là một phần của dylibs.
Tôi đã cố gắng này:
- Thi
install_name_tool -id "@/usr/local/lib/requiredlib.dylib" /usr/local/lib/requiredlib.dylib
- Thêm
-L/usr/local/lib
với các tùy chọn biên dịch. - Thêm tất cả đường dẫn dylib một cách rõ ràng vào tùy chọn biên dịch.
- Cố gắng thêm
DYLD_LIBRARY_PATH
không thành công vì Sierra không cho phép đặt biến đó vì lý do bảo mật.
Tôi biết rằng có thể thêm DYLD_LIBRARY_PATH
nhưng yêu cầu tắt SIP. Tôi có thể làm điều đó bởi tôi không muốn nếu có một cách sạch hơn để làm điều này.
P .: Tôi đang cố gắng biên dịch các ví dụ hướng dẫn cho Tulip graph library.
Ký hiệu còn thiếu có liên quan đến thư viện biểu đồ mà tôi đã cài đặt. Thông báo lỗi là:
Undefined symbols for architecture x86_64:
"tlp::saveGraph(tlp::Graph*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, tlp::PluginProgress*)", referenced from:
_main in tutorial001-02ee7e.o
"operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, tlp::Graph const*)", referenced from:
_main in tutorial001-02ee7e.o
ld: symbol(s) not found for architecture x86_64
Bất cứ khi nào tôi làm ls /usr/local/lib/requiredlib.dylib
tất cả thư viện được biên dịch từ Tulip đều có.
g++ -v
sản xuất:
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 8.1.0 (clang-802.0.42)
Target: x86_64-apple-darwin16.5.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
Sau khi thực hiện ls /usr/local/include/tulip/
tôi nhận được danh sách các file *.h
của các thư viện tôi có ý định sử dụng.
Nó không thực sự rõ ràng những biểu tượng bạn đang thiếu, những gì biến thể của g ++ bạn đang chạy, vv Và chắc chắn thư viện biên dịch của bạn không được cài đặt trong '/ usr/local/include' – pvg
Chỉnh sửa câu hỏi của bạn để thêm các chi tiết . – pvg
Để được trợ giúp về liên kết không thành công, bạn cần phải đăng ít nhất một dòng lệnh liên kết không hợp lệ và đầu ra của nó, * nguyên văn *. Các báo cáo sơ sài của những gì bạn đã làm quá mơ hồ để khiến chúng tôi không thể đoán trước được. –