2012-02-29 42 views
8

Tôi nhận được lỗi này khi cố gắng biên dịch ffmpeg trên máy CentOS 64 bit.ffmpeg cài đặt trên CentOS 64-bit 'cài đặt với lỗi -fPIC'

Dưới đây là tùy chọn ./configure tôi:

./configure --enable-shared --enable-gpl --enable-nonfree --enable-postproc --enable-swscale --enable-pthreads --enable-libx264 --enable-libxvid --enable-libvorbis --enable-libfaac --enable-libmp3lame --enable-libvpx

make

tôi nhận được lỗi sau khi biên dịch nguồn:

/usr/bin/ld: /usr/local/lib/libvpx.a(vpx_codec.c.o): relocation R_X86_64_32 against .rodata.str1.1' can not be used when making a shared object; recompile with -fPIC 
/usr/local/lib/libvpx.a: could not read symbols: Bad value 
collect2: ld returned 1 exit status 
make: *** [libavcodec/libavcodec.so.54] Error 1 

Làm thế nào để có được xung quanh lỗi này , và nhận libvpx và chạy với ffmpeg mới nhất trên hộp CentOS 64-bit của tôi?

+0

http://stackoverflow.com/questions/27226157/how-to-setup-ffmpeg-for-centos-release-6-5-server – Hitesh

+0

Đôi khi điều gì là xảy ra là khi bạn đang chạy -fPIC, nó sẽ ném lại lỗi này cho một số tệp đối tượng phụ. Chỉ cần sao lưu tệp đối tượng đó và chạy lại. Thí dụ. bạn đang chạy cho TotalSum.cpp và nó có tham chiếu đến tệp CalculateSum.o khác. Bây giờ, lỗi xuất hiện trên CalculateSum.o. Vì vậy, hãy sao lưu CalculateSum.o và chạy -fPIC. lỗi sẽ biến mất. – bgth

Trả lời

0

(Và câu hỏi là ...?)

thư viện chia sẻ phải có các mã đối tượng PIC, nhưng ffmpeg không làm như vậy.

+0

xin lỗi tôi nghĩ rằng câu hỏi đã được ngụ ý. Làm thế nào để có được xung quanh lỗi này, và nhận libvpx và chạy với ffmpeg mới nhất trên máy tính 64-bit của tôi? – ndmweb

+0

http://stackoverflow.com/questions/27226157/how-to-setup-ffmpeg-for-centos-release-6-5-server – Hitesh

2

Hãy thử

CFLAGS=-fPIC ./configure ...<your config options>... 

Để thêm cờ rằng lỗi đề cập đến là mất tích.

+0

Điều này phù hợp với tôi. Điều quan trọng là sử dụng cờ này khi xây dựng/cài đặt x264/libx264. –

0

Bạn đã biên dịch libvpx của mình với --shared-fPIC để nó tạo ra libvpx.so*?

Nếu không, bạn có thể thử nhận xét # 6 và # 7 trong số this vấn đề.

+0

Xin hãy giúp tôi !!!! ... http://stackoverflow.com/questions/27226157/how-to-setup-ffmpeg-for-centos-release-6-5-server – Hitesh

10

Vì bạn đã cấu hình FFMPEG với "--enable-shared", bạn cũng cần phải định cấu hình một số thư viện khác có "--enable-shared" cũng được, và tất cả đều phải sử dụng cùng một cài đặt.

Thông báo lỗi này về cơ bản là yêu cầu bạn biên dịch lại libvpx bằng "--enable-shared" được thêm vào lệnh configure, sau đó thử biên dịch lại FFMPEG (cũng được cấu hình với "--enable-shared"). Rất có thể là sau đó bạn sẽ gặp lỗi tương tự nhưng nó sẽ nói "libx264" hoặc "libmp3lame" thay vì "libvpx", vì vậy bạn cũng sẽ cần phải biên dịch lại các lib đó bằng "--enable-shared" trong lệnh configure.

+0

http://stackoverflow.com/questions/27226157/how-to -setup-ffmpeg-for-centos-release-6-5-server – Hitesh

2

Tôi gặp lỗi tương tự khi biên dịch ffmpeg trên máy x86_64 chạy Oracle Linux 6.3. Oracle Linux dựa trên Red Hat và do đó tương tự như CentOS trong câu hỏi ban đầu.

configure:

./configure --enable-shared --enable-nonfree --enable-libmp3lame --enable-libfaac --enable-libx264 --enable-encoder=x264 --enable-gpl 

thực hiện:

/usr/bin/ld: /usr/local/lib/libx264.a(common.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC 
/usr/local/lib/libx264.a: could not read symbols: Bad value 

Trong trường hợp của tôi, answer này, mặc dù một phần cụ thể để Ubuntu, làm sáng tỏ thêm về những vấn đề cơ bản liên quan đến hệ thống x86_64 với nói chung:

"Tôi tin rằng nếu bạn bật chia sẻ trên FFmpeg, bạn phải làm tương tự trên x264 trên các hệ thống x86_64, nếu không bạn sẽ có PIC chia sẻ FFmpeg và không tĩnh PIC x264."

Việc sửa chữa là đảm bảo các nguồn x264 mà tôi ban đầu được biên soạn bằng cách sử dụng 'enable-tĩnh' cờ với configure (mà tạo ra '/usr/local/lib/libx264.a') là tái biên soạn bằng cách sử dụng "enable-chia sẻ" cờ mà tạo ra các mục tiêu đúng đắn về "/usr/local/lib/libx264.so":

1st Attempt: 
    1. cd /tmp 
    2. wget ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2 
    3. tar xfv last_x264.tar.bz2; 
    4. cd x264-snapshot-xxxxxx 
    5. ./configure --enable-static 
    6. make && make install 

2nd Attempt: 
    1. cd /tmp/x264-snapshot-xxxxxx 
    2. make distclean 
    3. ./configure --enable-shared 
    4. make && make install 
0

tôi có vấn đề này trong MythTV xây dựng với libx264.a

Tôi đã tải xuống và xây dựng như Saheed đề xuất.

Điều duy nhất là /usr/local/lib/libx264.a không thay đổi khi tôi đã "thực hiện cài đặt". Tôi phải thực hiện "make install-lib-static"

Các vấn đề liên quan