리눅스 부스트 컴파일

리눅스 부스트 컴파일

Windows에서 이 방법으로 Boost를 컴파일했습니다.

Go to the directory tools/build/v2/.
Run bootstrap.sh
Run b2 install --prefix=PREFIX where PREFIX is the directory where you want Boost.Build to be installed
Add PREFIX/bin to your PATH environment variable.

그리고 그것은 효과가 있었습니다. 이제 Linux에서 이것을 시도하고 있지만 그렇지 않습니다. 나는 다음과 같은 상황에 처해 있습니다.

kron@kron:~/Software/Sources/boost_1_49_0/tools/build/v2$ ./bootstrap.sh 
bash: ./bootstrap.sh: /bin/sh^M: bad interpreter: No such file or directory
kron@kron:~/Software/Sources/boost_1_49_0/tools/build/v2$ sh bootstrap.sh 
: not foundh: 8: 
: not foundh: 10: 
: not foundh: 14: 
bootstrap.sh: 15: Syntax error: Bad for loop variable
kron@kron:~/Software/Sources/boost_1_49_0/tools/build/v2$ ls -l
total 224
-rw-r--r--  1 kron kron   271 Nov  5  2006 boost-build.jam
-rw-r--r--  1 kron kron  7437 Nov  9  2008 boost_build.png
-rw-r--r--  1 kron kron  7169 Jan 14  2009 boost_build.svg
-rw-r--r--  1 kron kron   842 Nov  5  2006 boost.css
-rw-r--r--  1 kron kron  1088 Jun  6  2011 bootstrap.bat
-rw-r--r--  1 kron kron   778 Oct 29  2003 bootstrap.jam
-rwxr-xr-x  1 kron kron  2737 Jun  6  2011 bootstrap.sh
drwx------  2 kron kron  4096 Feb 22 18:28 build
-rw-r--r--  1 kron kron 36462 Jun  6  2011 build-system.jam

답변1

그것은^M캐리지 리턴. Windows는 두 문자 시퀀스 캐리지 리턴, 줄 바꿈(CRLF 또는 ^M^J)으로 줄 바꿈을 나타냅니다. Linux 및 기타 유닉스에서는 단일 문자 LF를 사용합니다. 이 CR은 일반 문자로 처리되므로 커널은 /bin/sh␍대신 이라는 인터프리터를 찾습니다 /bin/sh. 명시적으로 호출하면 shCR도 명령 이름의 일부인 일반 문자로 처리됩니다.

이는 해당 파일이 텍스트 파일이었던 Windows 시스템에서 복사되었다는 표시입니다. Windows와 Linux 시스템 간에 텍스트 파일을 직접 복사할 수 없으므로 줄 끝을 변환해야 합니다. Windows에서 아카이브를 추출한 다음 파일을 Linux에 복사했을 가능성이 있습니다. 그렇게 하는 대신 Linux에서 아카이브를 추출하십시오.

Boost의 경우 현재버전 1.49.0, 아카이브는 네 가지 형식으로 배포됩니다.

  • 유닉스 줄 끝이 있는 gzip 및 bzip2;
  • zip 및 7z(Windows 줄 끝 포함)

Linux에서 Boost를 컴파일하는 가장 쉬운 방법은 bzip2 아카이브를 사용하는 것입니다. 7z로 작업해야 하는 경우 dos2unix또는 sed -i -e 's/\r$//'모든 텍스트 파일에서 같은 명령을 사용하여 줄 끝을 변환할 수 있습니다.

관련 정보