저는 일부 코드를 Linux에서 AIX로 포팅하는 작업을 진행 중입니다. 이 코드는 C++17의 헤더를 사용합니다.
#include <filesystem>
...
std::ifstream is(path);
if (!is.is_open() && std::filesystem::path(path).is_relative())
코드는 -std=c++17 옵션과 함께 gcc-c++ 8.3.0을 사용하여 AIX에서 컴파일되었습니다. 코드가 있는 개체 파일은 성공적으로 컴파일되지만 링크 시 링커가 실패합니다.
ld: 0711-317 ERROR: Undefined symbol: .std::filesystem::__cxx11::path::_M_split_cmpts()
ld: 0711-317 ERROR: Undefined symbol: .std::filesystem::__cxx11::path::has_root_directory() const
온라인으로 검색한 결과 gcc 8.xx에는 링크된 파일 시스템 라이브러리를 사용해야 한다는 사실을 발견했습니다 -lstdc++fs
. 실제로 Linux에서는 코드가 gcc 8.3.1로 컴파일되며 이 옵션이 사용됩니다. 그래서 다시 시도했습니다.
/opt/freeware/bin/g++ <comand> -lstdc++fs
collect2: fatal error: library libstdc++fs not found
compilation terminated.
그래서 제 질문은 AIX에서 gcc-c++를 사용하여 파일 시스템 라이브러리를 연결하는 방법입니다. 내 코드가 컴파일된다는 점을 고려하면 이것이 가능하다고 가정하지만 링커가 라이브러리를 찾을 수 없기 때문에 당황스럽습니다.