2011-10-02 50 views
1

我試圖讓pianobarfly在OS X上工作,無法正確編譯它。如何才能在OS X上正確編譯pianobarfly?

從安裝文件

選中的文本

Dependencies 
------------ 

gmake 
libao    http://www.xiph.org/ao/ 
libfaad2   http://www.audiocoding.com/downloads.html 
AND/OR libmad  http://www.underbit.com/products/mad/ 
pthreads 
libid3tag   http://www.underbit.com/products/mad/ 
UTF-8 console/locale! 



Building 
-------- 

If you have all of the dependencies listed above just type 

    make clean && make 

NOTE: The above won't work on Mac OS X (Snow Leopard) since c99 targets i386 
and cc (gcc4.2) targets x86_64. If you've built supporting libraries 
(libao, etc.) using gcc, you'll be unable to link. You can work around 
this issue by overriding CFLAGS[1] 

    make clean && make CFLAGS="-O2 -DNDEBUG -W64" && make DISABLE_FAAD=1 

我想我有所有的依賴,只是我不知道如果我有pthreads或沒有,我假設我的系統默認爲UTF-8 console/locale!

我已經使用自制軟件來安裝我沒有的依賴關係,例如faad2libid3tag,但我沒有在谷歌上關於安裝pthreads或者如何判斷我是否已經擁有它。

總之,當我嘗試pianobarfly請編譯,這是我得到:

####:pianobarfly user$ make clean && make CFLAGS="-O2 -DNDEBUG -W64" && make DISABLE_FAAD=1 
rm -f src/main.o src/player.o src/settings.o src/terminal.o src/ui_act.o src/ui.o\ 
src/ui_readline.o src/ui_dispatch.o src/fly.o src/fly_id3.o src/fly_mp4.o\ 
src/libpiano/crypt.o src/libpiano/piano.o src/libpiano/xml.o\ 
src/libwaitress/waitress.o src/libwaitress/waitress.o/test.o \ 
      src/libezxml/ezxml.o src/libpiano/crypt.lo src/libpiano/piano.lo\ 
      src/libpiano/xml.lo src/libwaitress/waitress.lo \ 
      src/libezxml/ezxml.lo pianobarfly libpiano.so* libpiano.a waitress-test 
c99 -O2 -DNDEBUG -W64 -I src/libpiano -I src/libwaitress \ 
      -I src/libezxml -DENABLE_FAAD \ 
      -DENABLE_MAD -DENABLE_ID3TAG -c -o src/main.o src/main.c 
c99 -O2 -DNDEBUG -W64 -I src/libpiano -I src/libwaitress \ 
      -I src/libezxml -DENABLE_FAAD \ 
      -DENABLE_MAD -DENABLE_ID3TAG -c -o src/player.o src/player.c 
c99 -O2 -DNDEBUG -W64 -I src/libpiano -I src/libwaitress \ 
      -I src/libezxml -DENABLE_FAAD \ 
      -DENABLE_MAD -DENABLE_ID3TAG -c -o src/settings.o src/settings.c 
c99 -O2 -DNDEBUG -W64 -I src/libpiano -I src/libwaitress \ 
      -I src/libezxml -DENABLE_FAAD \ 
      -DENABLE_MAD -DENABLE_ID3TAG -c -o src/terminal.o src/terminal.c 
c99 -O2 -DNDEBUG -W64 -I src/libpiano -I src/libwaitress \ 
      -I src/libezxml -DENABLE_FAAD \ 
      -DENABLE_MAD -DENABLE_ID3TAG -c -o src/ui_act.o src/ui_act.c 
c99 -O2 -DNDEBUG -W64 -I src/libpiano -I src/libwaitress \ 
      -I src/libezxml -DENABLE_FAAD \ 
      -DENABLE_MAD -DENABLE_ID3TAG -c -o src/ui.o src/ui.c 
c99 -O2 -DNDEBUG -W64 -I src/libpiano -I src/libwaitress \ 
      -I src/libezxml -DENABLE_FAAD \ 
      -DENABLE_MAD -DENABLE_ID3TAG -c -o src/ui_readline.o src/ui_readline.c 
c99 -O2 -DNDEBUG -W64 -I src/libpiano -I src/libwaitress \ 
      -I src/libezxml -DENABLE_FAAD \ 
      -DENABLE_MAD -DENABLE_ID3TAG -c -o src/ui_dispatch.o src/ui_dispatch.c 
c99 -O2 -DNDEBUG -W64 -I src/libpiano -I src/libwaitress \ 
      -I src/libezxml -DENABLE_FAAD \ 
      -DENABLE_MAD -DENABLE_ID3TAG -c -o src/fly.o src/fly.c 
src/fly.c: In function ‘_BarFlyParseCoverArtURL’: 
src/fly.c:733: warning: implicit declaration of function ‘strndup’ 
src/fly.c:734: warning: assignment makes pointer from integer without a cast 
c99 -O2 -DNDEBUG -W64 -I src/libpiano -I src/libwaitress \ 
      -I src/libezxml -DENABLE_FAAD \ 
      -DENABLE_MAD -DENABLE_ID3TAG -c -o src/fly_id3.o src/fly_id3.c 
c99 -O2 -DNDEBUG -W64 -I src/libpiano -I src/libwaitress \ 
      -I src/libezxml -DENABLE_FAAD \ 
      -DENABLE_MAD -DENABLE_ID3TAG -c -o src/fly_mp4.o src/fly_mp4.c 
c99 -O2 -DNDEBUG -W64 -I src/libpiano -I src/libwaitress \ 
      -I src/libezxml -DENABLE_FAAD \ 
      -DENABLE_MAD -DENABLE_ID3TAG -c -o src/libpiano/crypt.o src/libpiano/crypt.c 
c99 -O2 -DNDEBUG -W64 -I src/libpiano -I src/libwaitress \ 
      -I src/libezxml -DENABLE_FAAD \ 
      -DENABLE_MAD -DENABLE_ID3TAG -c -o src/libpiano/piano.o src/libpiano/piano.c 
c99 -O2 -DNDEBUG -W64 -I src/libpiano -I src/libwaitress \ 
      -I src/libezxml -DENABLE_FAAD \ 
      -DENABLE_MAD -DENABLE_ID3TAG -c -o src/libpiano/xml.o src/libpiano/xml.c 
c99 -O2 -DNDEBUG -W64 -I src/libpiano -I src/libwaitress \ 
      -I src/libezxml -DENABLE_FAAD \ 
      -DENABLE_MAD -DENABLE_ID3TAG -c -o src/libwaitress/waitress.o src/libwaitress/waitress.c 
c99 -O2 -DNDEBUG -W64 -I src/libpiano -I src/libwaitress \ 
      -I src/libezxml -DENABLE_FAAD \ 
      -DENABLE_MAD -DENABLE_ID3TAG -c -o src/libezxml/ezxml.o src/libezxml/ezxml.c 
c99 -O2 -DNDEBUG -W64 src/main.o src/player.o src/settings.o src/terminal.o src/ui_act.o\ 
    src/ui.o src/ui_readline.o src/ui_dispatch.o src/fly.o src/fly_id3.o src/fly_mp4.o\ 
    src/libpiano/crypt.o src/libpiano/piano.o src/libpiano/xml.o \ 
      src/libwaitress/waitress.o src/libezxml/ezxml.o -lao -lpthread -lm \ 
      -lfaad -lmad -lid3tag -o pianobarfly 
Undefined symbols for architecture x86_64: 
    "_strndup", referenced from: 
     _BarFlyOpen in fly.o 
ld: symbol(s) not found for architecture x86_64 
collect2: ld returned 1 exit status 
make: *** [pianobarfly] Error 1 
####:pianobarfly user$ 

回答

0

這是你正在試圖建立該程序的可移植性缺陷:它假定strndup()是可用的,並且它不是「T。

幸運的是,實現您自己的strndup替代品是一件小事,因爲它的功能是description

或者您可以檢查fly.c:也許替換strndupstrdup也有效。