configure.ac 파일에서 AC_CANONICAL_SYSTEM 매크로 선언시 에러가 발생합니다
글쓴이: kkb / 작성시간: 금, 2011/01/28 - 8:44오후
configure.ac 파일에서 AC_CANONICAL_SYSTEM 매크로 선언시 에러가 발생합니다
configure.ac 파일에
AC_CANONICAL_SYSTEM 매크로를 추가했더니
생성된 configure 스크립트 파일 실행시켰을 때
아래와 같은 조금 뜬금없는 에러가 발생합니다
corone:~/util/autoconf# ./configure (생략) configure: error: cannot find install-sh or install.sh in "." "./.." "./../.." (생략)
AC_CANONICAL_SYSTEM 매크로가
아키텍처 디펜던트한 매크로인지
버전에 디펜던트한 매크로인지
제 시스템에서는 선언이 안되네요
답변 부탁드립니다
Forums:
그리고 Linux의 configure 스크립트에서 read 명령어가 안되나요?
그리고 configure.ac에서 shell script 명령들을 configure 스크립트로 넘길려고 하는데,
Linux에서 configure.ac로부터 autoconf를 통해 생성한 configure 스크립트에서
read 명령어가 안되나요?
만약 read가 안된다면 대체할 수 있는 명령어는 무엇이 있나요?
AC_CANONICAL_SYSTEM이
AC_CANONICAL_SYSTEM이 install-sh를 못찾아서 그런건데 혹시 AC_CANONICAL_SYSTEM을 한 후에 AC_CONFIG_AUX_DIR를 사용해서 install-sh가 생성되는 디렉토리를 바꾸지 않았나요? 이경우 AC_CANONICAL_SYSTEM은 디폴트디렉토리에서 찾지만, AC_COFNIG_AUX_DIR때문에 install-sh는 다른곳에 있어서 이런 문제가 생길수 있어요. AC_COINFIG_AUX_DIR을 사용하지 않던가, 사용하려면 AC_CANONICAL_SYSTEM앞에 사용해야 해요. 참고로 최근 autoconf에서는 AC_CANONICAL_SYSTEM가 deprecated되었습니다.
read사용할수 있고요, 괄호[] 문자만 조심하면 쉘스크립트는 그냥 그래도 생성되게 할수 있습니다.
답변 감사합니다
답변 감사합니다
그런데 AC_CONFIG_AUX_DIR은 사용한 적이 없는데도 위와 같은 문제가 발생하네요
최근 autoconf에서는 AC_CANONICAL_SYSTEM가 deprecated되었다는 말씀이
그냥 최근 autoconf에서 AC_CANONICAL_SYSTEM 안된다는 의미 아닌가요?
AM_INIT_AUTOMAKE() 추가시에도 같은 에러가 발생합니다
그리고 read는 다른 셸 스크립트 파일(.sh 등)에 직접 사용하면 키보드 입력을 받는데
configure.ac로부터 autoconf를 통해 생성한 configure 스크립트에서는 read가 키보드 입력을 받지 않고 그냥 넘어가 버립니다
configure 스크립트로 복사된 (read 외에) 다른 셸 스크립트 명령들은 잘 동작합니다
1. 사용해도 되지만,
1. 사용해도 되지만, AC_CANONICAL_HOST, AC_CANONICAL_TARGET, AC_CANONICAL_BUILD가 그 역할을 물려 받았습니다.
2. 전체 configure.ac가 없으니 왜 그런지는 잘 모르겠네요. 생성된 configure스크립트를 열어서 해당 메시지를 찾아 그 전후 관계를 살펴보세요. 그 메시지를 내는 부분은 한두군데에 불과 할거예요. 또 매크로 순서를 확인하고 autoreconf --force --install해서 필요한 파일을 재생성해보세요.
3. read로 키보드입력이 안되는건 configure가 stdin을 /dev/null로 리다이렉트해서 그런거 같고요, 정 키보드 입력을 받아야 한다면 read xxx < /dev/tty같은 식으로 가능은 합니다. 하지만 configure에서 키보드 입력을 받는건 별로 바람직하게 생각되진 않는군요. 선택사항같은것은 AC_ARG_ENABLE같은 매크로를 사용하여 --with-xxx 나 --enable-xxx, --disable-xxx같이 커맨드라인으로 처리하도록 작성하는게 일반적이지요.
댓글 달기