다음은 잘못된 대답. 쉘이 실행할 수있는 모든 것은 Makefile에서 호출 할 수 있습니다. 한 줄에 전체 스크립트를 포함합니다.
여기가 올바른 대답입니다.
그러나 위의 방법은 잘못된 것입니다. 많은 무료 소프트웨어 패키지가 항상 이런 종류의 일을한다는 것을 알게 될 것입니다 : 라이브러리에 조건부로 링크 (사용 가능한 경우).
하지만 완료하려면 make를 실행하기 전에 별도의 configure
스크립트를 실행해야합니다. 소스 tarball을 원하는 임의의 자유 소프트웨어 패키지로 가져 와서 설치 지침을 읽으십시오. 그들은 make
을 실행하기 전에 configure
스크립트를 먼저 실행하도록 알려줍니다.
대부분의 자유 소프트웨어 패키지는 GNU 도구 체인을 사용하여 빌드 시스템 (configure
스크립트 및 Makefile
)을 만듭니다. GNU 툴체인은 autoconf
과 automake
도구로 구성되어 있습니다 (많은 경우 libtool
). 자세한 내용은 Google로 이동하십시오.
덜 인기있는 툴체인이 많이 있지만, GNU 툴체인이 이런 종류의 일에 가장 자주 사용됩니다. 그래서, 당신이 뭘 하려는지의 라인을 따라 뭔가를이 일반적으로 수행됩니다 방법은 다음과 같습니다
configure.ac
파일에서
다음 Makefile.am
파일에서
AC_CHECK_LIB(hwloc,some_function_in_the_hwloc_library,[LINK_HWLOC=-lhwloc])
AC_SUBST(LINK_HWLOC)
:
[email protected][email protected]
그게 전부입니다. 이것이 바로 대부분의 자유 소프트웨어 패키지가 똑같은 일을 할 필요가있는 셀 수없이 많은 횟수로 수행되는 방식입니다. autoconf
및 automake
은 쉘 스크립트와 makefile을 작성하는데 도움을 줄 것입니다.
사용 모델을 이해할 수 없습니다. 컴퓨터에 heloc이 설치되어 있지 않습니다. 어떤 엔티티가 "참조 된"기호를 해결할 것입니까? –
참조 된 기호는 전 처리기를 사용하여 비활성화됩니다. 따라서 foo.o는 두 경우 모두 동일하지 않습니다. 짧은 예제에서 오해해서 죄송합니다. – Rakib
고려해야 할 또 다른 가치는 사용자가 Makefile의 맨 위에 간단한 변수를 사용하여 hwloc을 연결하려는 경우/방법을 구성하도록하는 것입니다. –