2016-08-29 8 views
0

컴파일러가 -lz 플래그를 필요로하는 고대 GCC 버전을 개발자가 편안하게 사용하는 소스 패키지가 있습니다. 오브젝트 스펙 이전. 패키지는 매우 "branchy"이고 automake와 autoconf는 매우 "답답함"하므로 두 가지 질문이 있습니다.automake와 autoconf가 컴파일 라인 뒤에 -lz 플래그를 설정하도록 강제하고 .ac 파일을 변경하지 않고 수행하십시오.

첫 번째 질문은 autotools가 -lz 플래그를 뒤에 설정하도록 구성하는 방법입니다.

둘째, makefile.ac 및 configure.ac 파일을 사용하지 않고이 -lz 플래그를 강제로 설정할 수 있습니까? 이것은 내 소프트웨어 패키지가 아니기 때문에 항상 새 빌드를 수행 할 때마다이 파일을 편집하는 것은 단순히 옵션이 아닙니다.

오류가 발생하는 컴파일 행을 복사하여 끝에 -lz 및 -lxerces-c 플래그를 넣으면 작동한다는 점에 유의하십시오. 그래서 어떻게 든 autotools에서 이것을 변경해야합니다.

업데이트 : 그럼 난 어떻게 든
$ g++ line_contents -lz -lxerces-c 이 (오른쪽 디렉토리에있을 확인하는)와 심하게 구성된 라인 을 실행하여 그것을 해결하기 위해 관리 그리고 난 그냥 다시 만들어 실행하는 생각을했다

, automake는 단계가 통과하고 다만 앞으로 갔다는 것을 고려했다 보였다.

그래도 autotools를 사용하여 주문을 변경하는 방법에 대한 답을 얻는 것이 좋습니다.

+0

설정시'LDFLAGS' 환경 변수를 설정 하시겠습니까? – arrowd

+0

확실한 ./configure --help는 기본 설정을 덮어 쓰는 일련의 환경 변수를 나열하지만 LDFLAGS는 -lz 호출 순서가 아닌 사용자 정의 위치 만 설정하는 것처럼 보입니다. 그래서 내 libz가 기본 위치에 있지 않을 경우에만 유용 할 것입니다. – grokkaine

+0

왜 링커 플래그 순서가 중요합니까? – arrowd

답변

1

해당 작업에 대해 "gcc"를 직접 작성할 수 있습니다. 인수 중 하나가 -lz, 인지 확인한 다음 다시 입력 한 후 gcc을 호출하는 Python 또는 bash 스크립트. 그런 다음 CC=path/to/your/gcc ./configure을 실행하면 모든 작업이 완료됩니다.

+0

감사합니다. 매우 똑똑하지만 필자는 autotools를 사용하는 대답이 필요하기 때문에이를 허용하도록 설정하지 않을 것입니다. 이 프로젝트를 위해 내 자신의 gcc 스크립트를 설정하는 것도 번거로울 수 있습니다. 간단하고 똑똑한 아이디어로 당신은 나의 엄지를 위로 가지고 있더라도! – grokkaine