CFLAGS 및 LDFLAGS를 구성에 추가하는 올바른 구문은 무엇입니까?

CFLAGS 및 LDFLAGS를 구성에 추가하는 올바른 구문은 무엇입니까?

OpenVPN 소스 tarball을 사용하여 OpenBSD 5.5에 OpenVPN을 설치하고 싶습니다.

지시에 따라여기, 설치해야 lzo했고

다른 방법으로는 찾을 수 없으므로 CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib" "구성"에 지시어를 추가합니다 .gcc

OpenBSD에서 위의 작업을 수행하는 방법에 대한 가이드를 Google에서 광범위하게 검색했지만 아무것도 없습니다.

이것이 내가 할 계획입니다:

  1. 새로 생성된 디렉터리에 소스 tarball을 추출합니다.
  2. 명령을 내리다
    ./configure CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"
    
  3. 명령을 내리다make
  4. 명령을 내리다make install

다음 중 문법적으로 올바른 것은 무엇입니까?

./configure CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"

또는

./configure --CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"

또는

./configure --CFLAGS="-I/usr/local/include" --LDFLAGS="-L/usr/local/lib"

답변1

올바른 접근 방식은 다음과 같습니다.

./configure CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"

그러나 이것은 모든 configure스크립트에서 작동하지 않을 수 있습니다. CPATH및 같은 환경 변수를 설정하는 것이 좋습니다 ( man 페이지 LIBRARY_PATH참조 ).gcc

한 가지 예:

export CPATH=/usr/local/include
export LIBRARY_PATH=/usr/local/lib
export LD_LIBRARY_PATH=/usr/local/lib

.profile예를 들어, 귀하의. 실행 경로를 사용하지 않는 경우 공유 라이브러리의 경우 필요할 수 있습니다 LD_LIBRARY_PATH(OS, 빌드 도구 및 사용된 옵션에 따라 다르지만 문제가 되지는 않습니다).

답변2

첫 번째 것은 구문적으로 정확합니다.

./configure CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"

그러나 그것은강하게바이너리를 사용하는 것이 좋습니다 packages(7). 또는 어떤 이유로든 소스에서 반드시 빌드해야 하는 경우 다음 ports(7)과 같은 인프라를 사용하세요.FAQ 파트 15.

FAQ에 설명된 대로 포트 트리를 설정하세요. 그런 다음 openvpn포트를 찾으십시오 .

cd /usr/ports
make search key=openvpn

그러면 용어가 포함된 여러 포트가 출력됩니다 openvpn. 그 중 하나가 openvpn-2.3.2경로 입니다 net/openvpn.

cd net/openvpn
sudo make install clean

이것의 이점은 lzo2시스템을 손상시키지 않고 종속성(여기에서만)이 올바르게 설치되고 openvpnOpenBSD에서 이를 사용하는 방법에 대한 추가 지침을 얻을 수 있다는 것입니다.

답변3

그것은 모두 구성 스크립트에 따라 다릅니다. 구성 스크립트가 autoconf에 의해 생성된 경우 /usr/local/lib 및 /usr/local/include가 빌드에 사용되도록 하는 "올바른" 방법은 CONFIG_SITE를 사용하는 것입니다. 즉, 셸 시작 파일에 CONFIG_SITE를 정의하고 다음을 수행하여 모든 구성 호출에 대해 CONFIG_SITE를 전역으로 만들 수 있습니다.

cat > $CONFIG_SITE << EOF
CFLAGS="-I/usr/local/include $CFLAGS"
LDFLAGS="-L/usr/local/lib $LDFLAGS"
EOF

또는 위의 내용을 /usr/local/etc/config.site에 추가하여 /usr/local을 접두사로 사용하는 구성 호출에 대해서만 설정하십시오. 구성을 사용하는 모든 호출은 --prefix=/usr/local/usr/local/etc/config.site(또는 해당 경로를 사용하려는 경우 /usr/local/share/config.site)를 읽습니다. 기본 접두사는 /usr/local이므로 /usr/local/etc/config.site를 생성하면 접두사가 없는 모든 구성 호출이 할당됩니다.

이는 autoconf에 의해 구성 스크립트가 생성된 경우에만 적용된다는 점을 다시 한 번 참고하세요.

답변4

이전에 "./configure"를 실행했다면 다음을 수행할 수 있습니다.
./configure CFLAGS="-I/usr/include/libxml2/"

관련 정보