2011-03-12 4 views
0

Fedora 14 시스템에서 지침 (http://wiki.swftools.org/index.php/FAQ)을 사용하여 swftools를 성공적으로 컴파일했습니다. 다른 Linux 시스템에서 도구 중 하나 (pdf2swf)를 사용하고 싶습니다. 내가 그것을 옮기고 그것을 다른 머신에서 실행하면 공유 라이브러리를 요청한다. swftools (특히 pdf2swf)를 컴파일 할 수 있습니까? 그래서 다른 Linux 머신에서 실행할 때 공유 라이브러리를 요구하지 않습니까? 독립적으로 실행할 수있는 한 실행 파일 자체의 크기가 커지면 괜찮습니다.결과로 실행 파일에 공유 라이브러리가 필요 없도록 리눅스에서 컴파일하는 방법

저는 Linux에 익숙하지 않으므로 고급 지식이 필요한 경우 적절한 온라인 리소스를 알려주십시오. 동적/공유 라이브러리에 반대로 당신이 원하는

감사

+0

'./configure --help' - 정적을 찾습니다. – Erik

답변

2

그것은 사소한 일입니다. 물론 이것은 정적 라이브러리가 설치되어 있어야 함을 의미합니다. 링커 (종종 cc를 통해 호출 됨)는 둘 다 사용할 수있는 경우 공유 라이브러리를 사용하는 것만으로 기본 설정됩니다.

[[email protected] ~]$ cat hello.c 
#include <stdio.h> 
int main() { 
    printf("Hello, world!\n"); 
    return 0; 
} 
[[email protected] ~]$ cc hello.c -o hello 
[[email protected] ~]$ file hello 
hello: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, not stripped 
[[email protected] ~]$ ldd hello 
     linux-gate.so.1 => (0x00205000) 
     libc.so.6 => /lib/libc.so.6 (0x00697000) 
     /lib/ld-linux.so.2 (0x005b4000) 
[[email protected] ~]$ cc hello.c -o hello -static 
[[email protected] ~]$ file hello 
hello: ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), statically linked, for GNU/Linux 2.6.32, not stripped 
[[email protected] ~]$ ldd hello 
     not a dynamic executable 
[[email protected] ~]$ ./hello 
Hello, world! 

는이 작품을 만들기 위해 내가 glibc는 정적, 기본적으로 설치되지 않습니다 (적어도 Fedora14 인이 상자에) 설치하는 데 필요한. 몇몇 패키지는 ./configure 레벨에서 정적 링크를 선택할 수있게 해 주며 그렇지 않으면 Makefile을 수정해야 할 수도 있습니다.

1

음, 정적 라이브러리를 연결됩니다.

응용 프로그램을 컴파일하고 정적으로 링크해야합니다. 당신은 당신이 컴파일러의 전화에 정적 스위치를 적용 할 수 있습니다 gcc를 사용하는 경우 :

gcc -static <and the whole gcc shebang> 

당신이 메이크 파일을 편집 할 수있는 시간의 대부분 (A CC를 찾아 정의하거나 그런 일을 CC_ARGS) 그냥 정적을 포함 위와 같이 스위치하십시오.

관련 문제