Tôi đang xây dựng một chương trình C ++ đơn giản và tôi muốn thay thế tạm thời một hệ thống được cung cấp thư viện dùng chung với phiên bản mới hơn của nó, để phát triển và thử nghiệm.
Tôi đã thử đặt biến LD_LIBRARY_PATH nhưng trình liên kết (ld) không thành công với:
/ usr / bin / ld: không thể tìm thấy -lyaml-cpp
Tôi mong đợi nó hoạt động vì theo trang ld man:
Trình liên kết sử dụng các đường dẫn tìm kiếm sau để định vị các thư viện chia sẻ được yêu cầu: ... Đối với một trình liên kết gốc, nội dung của biến môi trường "LD_LIBRARY_PATH" ...
Sau đó, tôi đã thử thiết lập LIBRARY_PATH và nó đã hoạt động.
Theo hướng dẫn của GCC:
Giá trị của LIBRARY_PATH là một danh sách các thư mục được phân tách bằng dấu hai chấm, giống như PATH. Khi được định cấu hình như một trình biên dịch gốc, GCC sẽ thử các thư mục được chỉ định khi tìm kiếm các tệp liên kết đặc biệt, nếu nó không thể tìm thấy chúng bằng GCC_EXEC_PREFIX. Liên kết bằng GCC cũng sử dụng các thư mục này khi tìm kiếm các thư viện thông thường cho tùy chọn -l (nhưng các thư mục được chỉ định bằng -L xuất hiện trước).
Như hướng dẫn (GCC) gợi ý, LIBRARY_PATH hoạt động vì tôi liên kết với GCC.
Nhưng..
- Vì tôi liên kết với gcc tại sao ld được gọi, như thông báo lỗi cho thấy?
- Điểm có hai biến phục vụ cùng một mục đích là gì? Có sự khác biệt nào khác không?