CentOS 및 작은 부스트 ​​예제

CentOS 및 작은 부스트 ​​예제

나는 이것이 부스트 자체보다 Linux와 더 관련이 있다고 생각하기 때문에 여기에 이 ​​질문을 하는 것입니다.

그래서 작은 cpp 파일을 만들었습니다.

#include <boost/math/special_functions/round.hpp>
#include <iostream>

int main(int argc, char **argv)
{
    std::cout << "Start rounding ..." << std::endl;

    double b = boost::math::round(1.5);
    std::cout << "Rounding of 1.5: " << b << std::endl;

    return 0;
}

이제 컴파일을 시작합니다.

g++ main.cpp

모든 것이 작동했고 a.out파일을 얻었습니다. 명령을 입력하면 다음과 같은 결과 ldd a.out가 나타납니다.

linux-vdso.so.1 =>  (0x00007ffdfdf38000)
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f6183d77000)
libm.so.6 => /lib64/libm.so.6 (0x00007f6183a74000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f618385e000)
libc.so.6 => /lib64/libc.so.6 (0x00007f618349d000)
/lib64/ld-linux-x86-64.so.2 (0x00007f61840a7000)

여기에 질문이 있습니다.

컴파일할 때 오류가 발생하지 않는 이유는 무엇입니까? 나는 컴파일러/링커가 다음과 같이 말할 것이라고 가정합니다. Hey, there is a function declared (in the boost hpp file), but not defined.라운드 함수의 정의가 부스트 라이브러리 중 하나에 정의되어 있다고 가정합니다. 내 생각에는 -lboost_math_c99l.

답변1

글쎄요, (Mac OS X에서는) 실패했습니다. CentOS가 해당 파일을 어디서 가져올 수 있는지 살펴보겠습니다.

# yum whatprovides '*/round.hpp'
...

boost-devel이 출력 어딘가에는 일부 아키텍처 복고풍 에 대한 참조가 있어야 합니다 . 따라서 귀하의 시스템에는 boost-devel컴파일러가 찾을 수 있는 필수 헤더가 포함된 패키지가 설치되어 있다고 가정합니다 (빌드 환경이 손상되지 않는 한). 패키지 이름을 알고 나면 다음을 자세히 알아볼 수 있습니다.

# rpm -ql boost-devel | grep ns/round.hpp
/usr/include/boost/math/special_functions/round.hpp

관련 정보