첫째, 내가 모두의
내가 코드 :: 블록과 C++에서 응용 프로그램을 구축 ... 내가 여기 올바른 맥락에서 질문을 희망 리눅스에서 C++ 응용 프로그램에 대한 정적 라이브러리의 위치를 지정합니다. 응용 프로그램은 타사에서 제공하는 정적 라이브러리를 사용하며 패키지 관리를 통해 시스템에 설치할 수 없습니다. 그러므로 나는 응용 프로그램을 배포 할 때이 라이브러리를 제공합니다. 여기내 목표 설정과 같은 모습입니다 :
<Target title="Unix_162">
<Option output="bin/my_app" prefix_auto="1" extension_auto="1" />
<Option working_dir="/home/marco/third_party_dist/lib" />
<Option object_output="obj/Unix_162" />
<Option type="1" />
<Option compiler="gcc" />
<Option use_console_runner="0" />
<Option parameters="-c" />
<Compiler>
<Add directory="/home/marco/third_party_dist/include" />
</Compiler>
<Linker>
<Add library="/home/marco/third_party_dist/lib/lib1.so" />
<Add library="/home/marco/third_party_dist/lib/lib2.so" />
<!-- some more included the same way -->
<Add directory="/home/marco/third_party_dist/lib" />
</Linker>
</Target>
나는이 목표 벌금을 구축하고 실행할 수 있습니다. 모든 것이 작동합니다.
오늘 저는 데비안 스퀴즈 (Debian Squeeze)를 실행하려고 시도했지만 제 3 자의 실행 파일과 라이브러리가 모두 들어있는 폴더를 복사했습니다. 모든 것이 하나의 폴더에있는 한 실행 파일은 .so 파일을 찾습니다. 내가 틀렸어. 코드 :: 블록이 실행에 대한 작업 디렉토리를 설정할 수 있기 때문에
/home/my_app/my_app: error while loading shared libraries: lib1.so: cannot open shared object file: No such file or directory
내 developement에 시스템에이 메시지가 없습니다 : 나는 메시지가 나타납니다. /etc/ld.so.conf.d/my_app.conf 안에 .so 파일의 위치를 넣어 오류 메시지를 제거 할 수 있습니다 ...
어쨌든 실행 파일을 빌드하여 라이브러리를 검색 할 수 있습니까? 실행 디렉토리에? 아니면 데비안에만 해당되는 문제입니까? 또는 실행 파일을 실행하기 전에 프로세스의 작업 디렉토리를 지정할 수 있습니까?
난 당신이 응용 프로그램을 시작하기 전에 시스템 구성/환경을 변경하는 것을 방지 할 ...
솔루션 2) 나에게 좋은 소리. 나는 지금이 매개 변수를 어디에 두어야하는지 알지 못한다. 그들을 "다른 링커 옵션"에 넣어야합니까? 실행 전에/실행 전에 전달합니까? –
링크 타임에 전달합니다. g ++/gcc를 사용하여 응용 프로그램을 연결한다고 가정합니다. –
고마워! 나는 Code :: Blocks의 "Other linker options"텍스트 필드에 인수를 전달하고 이것이 링크 타임에 완료되었다고 가정합니다. 내가 데비안 시스템에 응용 프로그램을 복사하고 잘 시작했습니다! –