Çözüldü DevIL Source Static Library Olarak Nasıl Build Edebilirim?

Bu konu çözüme ulaştırılmıştır. Çözüm için konuya yazılan tüm yorumları okumayı unutmayın. Eğer konudaki yorumlar sorununuzu çözmediyse yeni bir konu açabilirsiniz.
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.

Whistle

Ruhsuz :/
Kurucu
Geliştirici
Yardımsever Üye
Mesaj
12.454
Çözümler
580
Beğeni
16.646
Puan
6.281
Ticaret Puanı
2
Evet, bende bi yardım konusu açayım dedim. :)
DevIL source dosyalarını Unix/Freebsd build etmeye çalışıyorum. İndirdiğim dosyaların içinde cmake kullanılarak nasıl build edileceği yazılıyor fakat shared library formatında çıktı veriyor. Yani .so olarak. Ben bunu .a olarak nasıl çıktı verebilirim?

devil build.webp
 
Çözüm
Aradan baya geçti ama son durumu açıklıyorum.
Freebsd ports ile istediğim şekilde build ettirebildim.

src-IL içerisindeki CMakeLists.txt dosyasında şu satırı bulun;
Makefile:
Genişlet Daralt Kopyala
option(BUILD_SHARED_LIBS "Build with shared (.DLL .SO) libraries." ON)

şöyle değiştirin;
Makefile:
Genişlet Daralt Kopyala
option(BUILD_SHARED_LIBS "Build with shared (.DLL .SO) libraries." OFF)

Daha sonra src-ILU içerisindeki CMakeLists.txt dosyasında şu satırı bulun;
Makefile:
Genişlet Daralt Kopyala
# Remove SHARED to create a static library
add_library(ILU SHARED ${ILU_SRCS} ${ILU_INC} ${ILU_RSRC})

Burada SHARED kısmını siliyoruz. Şöyle olacak;
Makefile:
Genişlet Daralt Kopyala
add_library(ILU ${ILU_SRCS} ${ILU_INC} ${ILU_RSRC})

Son olaraks rc-ILUT içerisindeki CMakeLists.txt dosyasında şu...
her lib gibi (libstdc++.so6) genelde bu şekilde çalışıyor. .a olarak build etmedeki amaç nedir ? Yanlış anlamayın sadece merakımdan soruyorum.
 
.so olanları projeye bağladığınız çalışabilmesi ekstra olarak lib dosyasına ihtiyaç duyar.
.a ise static librarydir. Bunu projeye dahil ettiğinizde çalışması için ekstra lib dosyasına ihtiyaç yok.

Windows’da ki .lib dosyaları içinde aynı durum.
MT ile kullandığında dll gerekmez ama MD yaparsan dll ister
 
Ben baya araştırdım ama bulamadım bir türlü. Umarım siz bir şeyler bulabilirsiniz. Şimdiden teşekkürler :)
 
Merhaba biraz geç oldu unutmuşum bakmayı :D gerekli source dosyasını freebsd üzerinde Gnumakefile adlı dosyayı açıp en üstüne
GCC = gccVERSION
GXX = g++VERSION

şeklinde version yazan yerleri kendi gcc sürümünüze göre eklersiniz, gcc10'da bir sıkıntı çıkmadı güncel library'lerde.
Build ettiğiniz zaman gmake clean, gmake dep, gmake -j4

Dosyanın içersinide dediğiniz gibi bir lib oluşucaktır.
 
Evet, bende bi yardım konusu açayım dedim. :)
DevIL source dosyalarını Unix/Freebsd build etmeye çalışıyorum. İndirdiğim dosyaların içinde cmake kullanılarak nasıl build edileceği yazılıyor fakat shared library formatında çıktı veriyor. Yani .so olarak. Ben bunu .a olarak nasıl çıktı verebilirim?

2885 eklentisini görüntüle
yaaa süpersin bende bunun başka bi çeşidini arıyorum rica edelim şu binarinin clientin içindeki tüm dlller ve başka istediği şeyler olsun o binariye bu istediği dosyaları "sourceden" nasıl gömeriz yaa

ama sourcesi olmayan filesler var belki onları kurmak istersek sourceden olmayan sadece 3. parti programlar ile binarinin istediği clientteki tüm dosyaları nasıl gömeriz bu 2 unsuru bizlere konu açıp öğretirmisiniz ya mükemmel olur :)
 
Merhaba biraz geç oldu unutmuşum bakmayı :D gerekli source dosyasını freebsd üzerinde Gnumakefile adlı dosyayı açıp en üstüne
GCC = gccVERSION
GXX = g++VERSION

şeklinde version yazan yerleri kendi gcc sürümünüze göre eklersiniz, gcc10'da bir sıkıntı çıkmadı güncel library'lerde.
Build ettiğiniz zaman gmake clean, gmake dep, gmake -j4

Dosyanın içersinide dediğiniz gibi bir lib oluşucaktır.
Derlemede bi sorun yok. Static olarak çıktıyı almak gerekiyor. Zaten bunu bir türlü halledemediğim için hazır derlenmiş libleri aldım
 
Aradan baya geçti ama son durumu açıklıyorum.
Freebsd ports ile istediğim şekilde build ettirebildim.

src-IL içerisindeki CMakeLists.txt dosyasında şu satırı bulun;
Makefile:
Genişlet Daralt Kopyala
option(BUILD_SHARED_LIBS "Build with shared (.DLL .SO) libraries." ON)

şöyle değiştirin;
Makefile:
Genişlet Daralt Kopyala
option(BUILD_SHARED_LIBS "Build with shared (.DLL .SO) libraries." OFF)

Daha sonra src-ILU içerisindeki CMakeLists.txt dosyasında şu satırı bulun;
Makefile:
Genişlet Daralt Kopyala
# Remove SHARED to create a static library
add_library(ILU SHARED ${ILU_SRCS} ${ILU_INC} ${ILU_RSRC})

Burada SHARED kısmını siliyoruz. Şöyle olacak;
Makefile:
Genişlet Daralt Kopyala
add_library(ILU ${ILU_SRCS} ${ILU_INC} ${ILU_RSRC})

Son olaraks rc-ILUT içerisindeki CMakeLists.txt dosyasında şu satırı bulun;
Makefile:
Genişlet Daralt Kopyala
# Remove SHARED to create a static library
add_library(ILUT SHARED ${ILUT_SRCS} ${ILUT_INC} ${ILUT_RSRC})

Burada SHARED kısmını siliyoruz. Şöyle olacak;
Makefile:
Genişlet Daralt Kopyala
add_library(ILUT ${ILUT_SRCS} ${ILUT_INC} ${ILUT_RSRC})

ports lardan derlediğinizde şu dizinde olacaktır: /usr/ports/graphics/devil/work/DevIL-1.8.0/DevIL/src-IL

/usr/ports/graphics/devil klasörü içerisindeki Makefile dosyasına şunu ekleyin;
Makefile:
Genişlet Daralt Kopyala
CMAKE_ARGS+=        -DBUILD_SHARED_LIBS:BOOL=OFF

devil 1.8.0 static build.webp


Detaylara buradan bakabilirsiniz:
 
Son düzenleme:
Çözüm
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst