Program Tip

구성 / 메이크주기에 include 및 lib 경로를 추가하는 방법은 무엇입니까?

programtip 2020. 11. 1. 18:35
반응형

구성 / 메이크주기에 include 및 lib 경로를 추가하는 방법은 무엇입니까?


su 액세스 권한이없는 Linux 상자에 라이브러리를 설치할 장소가 필요합니다. ~ / local [/ bin, / lib, / include]를 사용하고 있지만 ./configure에서 라이브러리를 찾도록 어떻게 말할 수 있는지 모르겠습니다 (특히 libgif가 필요한 emacs를 컴파일하려고합니다.) , 내 배포판에 오지 않음).

나는 추가를 시도했다

export PATH=$PATH:~/local/bin
export LD_LIBRARY_PATH=~/local/lib
export C_INCLUDE_PATH=~/local/include
export CPLUS_INCLUDE_PATH=~/local/include

.bashrc에 있지만 작동하지 않는 것 같습니다.


config.site 파일이 필요합니다. 시험:

$ mkdir -p ~ / 로컬 / 공유
$ cat << EOF> ~ / local / share / config.site
CPPFLAGS = -I $ HOME / local / include
LDFLAGS = -L $ HOME / local / lib
...
EOF

--prefix = $ HOME / local을 사용하여 autoconf 생성 구성 스크립트를 호출 할 때마다 config.site가 읽히고 모든 할당이 수행됩니다. CPPFLAGS 및 LDFLAGS는 필요한 모든 것이지만 원하는 다른 할당도 할 수 있습니다 (따라서 위의 샘플에서 ...). -I 플래그는 CFLAGS가 아닌 CPPFLAGS에 속합니다. -I는 컴파일러가 아닌 전처리기를위한 것입니다.


make를 실행할 때 LDFLAGS 및 CFLAGS를 설정합니다.

$ LDFLAGS="-L/home/me/local/lib" CFLAGS="-I/home/me/local/include" make

수백만 번 그렇게하고 싶지 않다면 .bashrc (또는 셸에 해당하는)로 내보내십시오. 또한 LD_LIBRARY_PATH를 / home / me / local / lib를 포함하도록 설정합니다.

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/me/local/lib

제대로하는 데 시간이 걸렸습니다. ARM 타겟을 위해 Ubuntu에서 크로스 컴파일 할 때이 문제가 발생했습니다. 나는 그것을 다음과 같이 해결했다.

PATH=$PATH:/ccpath/bin CC=ccname-gcc AR=ccname-ar LD=ccname-ld CPPFLAGS="-nostdinc -I/ccrootfs/usr/include ..." LDFLAGS=-L/ccrootfs/usr/lib ./autogen.sh --build=`config.guess` --host=armv5tejl-unknown-linux-gnueabihf

CFLAGS는 autogen.sh/configure와 함께 사용되지 않습니다.이를 사용하면 "configure : error : C compiler cannot create executables"오류가 발생했습니다. 빌드 환경에서 autogen.sh 스크립트가 제공되지 않은 경우 위의 명령에서 ./autogen.sh를 ./configure로 대체했습니다. --host 매개 변수를 얻기 위해 대상 시스템에서 config.guess를 실행했습니다.

autogen.sh/configure를 성공적으로 실행 한 후 다음으로 컴파일하십시오.

PATH=$PATH:/ccpath/bin CC=ccname-gcc AR=ccname-ar LD=ccname-ld CPPFLAGS="-nostdinc -I/ccrootfs/usr/include ..." LDFLAGS=-L/ccrootfs/usr/lib CFLAGS="-march=... -mcpu=... etc." make

내가 사용하기로 선택한 CFLAGS는 "-march = armv5te -fno-tree-vectorize -mthumb-interwork -mcpu = arm926ej-s"입니다. 모든 include 디렉토리를 올바르게 설정하는 데 시간이 걸립니다. 일부 include는 크로스 컴파일러를 가리키고 일부는 루트 파일 시스템 include를 가리키고 일부 충돌이있을 수 있습니다.

나는 이것이 완벽한 대답이 아니라고 확신합니다. 그리고 여전히 Makefiles에서 / ccrootfs가 아닌 /를 가리키는 일부 include 디렉토리가 표시됩니다. 이 문제를 해결하는 방법을 알고 싶습니다. 이것이 누군가를 돕기를 바랍니다.

참고 URL : https://stackoverflow.com/questions/7561509/how-to-add-include-and-lib-paths-to-configure-make-cycle

반응형