MagickWand kompilacja z konsoli, jakie parametry ?

0

Niestety dokumentacja MagickWanda odnośnie kompilacji na OS X w konsoli jest zerowa. O ile z innymi bibliotekami np. curl nie mam problemu po prostu dodaje opcje -lcurl i jest ok.
W dokumentacji co prawda jest opis jak skompilować kod za pomocą Clanga ale to tylko pod Linuxem:

cc -o wand wand.c `pkg-config --cflags --libs MagickWand`

Oczywiście pod OS X to nie pójdzie z uwagi na brak pkg-config co jest dość oczywiste.

Sam nagłówek:

#nclude <wand/MagickWand.h>

Oczywiście zaznaczam, że samą bibliotekę mam zainstalowaną sprawdzałem pod kątem nagłówków, jeśli chodzi o skompilowane moduły biblioteki to w sumie nie wiem gdzie jest ich lokalizacja. Pliki nagłówkowe mam w lokalizacji:

/opt/local/include/ImageMagick-6/wand

HELP :)

0

Wcale nie takie oczywiste. Widzę że nie stosujesz MacPorts (https:*www.macports.org) i/lub Brew (http:*brew.sh). Tam masz narzędzia i biblioteki.

A co do pytania.. Jak byś wiedział gdzie leżą biblioteki, to mógłbyś podać w przełącznikach kompilatora konsolidację z nimi.

0

ImageMagick instalowałem oczywiście poprzez macports. Tak więc ściągnął automatycznie źródła i je skompilował. Same polecenia convert w konsoli itp. działają bez problemów. A gdzie są biblioteki, które należy dołączyć to nie mam pojęcia.
To dlaczego w CURL wystarczyło dodać opcje -lcurl a tutaj jest tyle komplikacji. Zresztą nagłówki magickwanda powinny być dostępne w lokalizacji w której kompilator trzyma te z biblioteki standardowej w katalogu wand. Obawiam się, że niestety w konsoli nie będzie tak łatwo i będzie trzeba skorzystać z przykładu projektu pod XCode :(

1

Sprawdź narzędziem otool gdzie leżą te biblioteki w Twoim systemie (najprawdopodobniej są w /opt/local/lib), i dodaj do kompilatora przełączniki.

otool -L /opt/local/bin/jakis_program_binarny_z_pakietu_imagemagic

Kompilaotor wywołasz tak:

cc -o wand wand.c -I/ścieżka_do_katalogu_z_nagłówkiem_magicwand -L/katalog_gdzie_leżą_biblioteki -lbiblioteka_do_magicwand

Swoją drogą nie rozumem dlaczego przez ports nie zainstalowałeś pkgconfig ?

0

Ustawiłem odpowiednie ścieżki, jednak nie wiem jaką nazwę wprowadzić dla ostatniego parametru, próbowałem różne warianty ale ciągle dostaję info:
ld: library not found for -lImageMagick-6
Tak więc błędna nazwa biblioteki, tylko skąd ja mam wiedzieć jaka jest faktyczna nazwa, z dokumentacji wynika, ze jest to: MagickWand, ale w moim wypadku efekt jest ten sam, brak takowej biblioteki, mimo, że jest zainstalowana.

gcc ~/Desktop/magickwand.c -I/opt/local/include/ImageMagick-6 -L/opt/local/lib -DMAGICKCORE_QUANTUM_DEPTH=8 -DMAGICKCORE_HDRI_ENABLE=1 -lImageMagick-6
1

Nazwa podawana po -l (minus el), to nazwa pliku biblioteki pozbawionego przedrostka lib oraz końcówki .dynlib.
Np. jeśli masz bibliotekę: libSruTutu8.dynlib , to podasz nazwę SruTutu8 . Comprende? :-)

0

Wielkie dzięki :) I nastała jasność ;)
Dla potomnych kompilowanie z MagickWand:

gcc ~/Desktop/magickwand.c -o ~/Documents/wand -I/opt/local/include/ImageMagick-6 -L/opt/local/lib -DMAGICKCORE_QUANTUM_DEPTH=8 -DMAGICKCORE_HDRI_ENABLE=1 -lMagickCore-6.Q16.2 -lMagickWand-6.Q16.2

Zaznaczam, że nie wszystkie funkcje z tej biblioteki mogą się skompilować, gdyż MagickWand to kilka bibliotek, więc trzeba dołączać je w miarę potrzeby, tak jak powyżej dołączane: MagickCore i MagickWand.

0

A co do pkg-config to pewnie dodanie do opcji kompilatora to co wypluje pkg-config powinno załatwić dodawanie wszystkich potrzebnych bibliotek MagickWand. Więc to powinno w miarę uprościć sprawę.

pkg-config --cflags --libs MagickWand

1 użytkowników online, w tym zalogowanych: 0, gości: 1