2012-01-09 30 views
5

Tôi xây dựng GCC và thư viện của riêng mình và đặt các thư viện trong /opt/gcc-4.6.2/lib để các thư viện có tên chung như libstdc++ không can thiệp vào các phần khác của hệ thống. Điều này có nghĩa tôi phải chỉ định đường dẫn tìm kiếm thư viện bằng tay:Đường dẫn tìm kiếm thư viện thiết lập CMake không thành công trong testCXXCompiler

$> g++-4.6.2 -L/opt/gcc-4.6.2/lib input.cpp 

Khi cố gắng để có được dự án của tôi để xây dựng với CMake, tôi dường như không thể tìm ra cách để nói với CMake để tìm kiếm thư viện đó. Các documentation nói để sử dụng CMAKE_LIBRARY_PATH, mà ta đã đặt trên dòng sử dụng để tạo Makefiles tôi:

$> cmake .. -DCMAKE_CXX_COMPILER=g++-4.6.2 \ 
      -DCMAKE_LIBRARY_PATH=/opt/gcc-4.6.2/lib 

này, tuy nhiên, thất bại trong kỳ thi chương trình biên soạn đơn giản:

# blah blah blah... 

/usr/local/bin/g++-4.6.2 
CMakeFiles/cmTryCompileExec.dir/testCXXCompiler.cxx.o -o cmTryCompileExec 
-rdynamic 

/usr/bin/ld: cannot find -lstdc++ 

# blah blah blah... 

tôi dường như không thể để tìm ma thuật voodoo cần thiết để làm cho CMake phát ra -L/opt/gcc-4.6.2/lib để biên dịch thử nghiệm (tôi biết CMAKE_LIBRARY_PATH hoạt động sau khi dự án được xây dựng). Làm thế nào tôi có thể buộc CMake sử dụng một đường dẫn thư viện thay thế để liên kết các tệp thi hành thử nghiệm?

Trả lời

2

Hmm, tôi không quen với cách gcc tự xây dựng, nhưng tôi cho rằng nó nên biết nơi để tìm kiếm libs của nó. Có lẽ bạn nên thử biên dịch chéo.

Ngoài ra, CMAKE_LIBRARY_PATH sẽ không giúp được vấn đề của bạn, vì nó đặt đường dẫn tìm kiếm thư viện chỉ cho CMake, không dành cho trình biên dịch.

Vì vậy, tôi không thấy bất kỳ cách nào khác ngoại trừ việc đặt CMAKE_CXX_FLAGS hoặc CMAKE_EXE_LINKER_FLAGS thành -L/opt/gcc-4.6.2/lib.

Các vấn đề liên quan