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 또는 CRLF ^M^J
)으로 나타냅니다. Linux 및 기타 유닉스는 단일 문자 LF를 사용합니다. 이 CR은 일반 문자로 처리되므로 커널은 /bin/sh␍
대신 이라는 이름의 인터프리터를 찾습니다 /bin/sh
. 또한 CR을 일반 문자로 처리하며 명시적으로 호출할 때 명령 이름의 일부입니다 sh
.
이는 파일이 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$//'
줄 끝을 변환할 수 있습니다.