- Bir yazılım mühendisi, Cosmopolitan Libc kullanarak gerçekten taşınabilir çalıştırılabilir dosyalar üretme sürecini basitleştirmek için GCC için bir yama yazdı.
- Bu yama sayesinde bash, curl, git ve GCC'nin kendisi gibi popüler yazılımlar, kaynak kodu değiştirilmeden Cosmopolitan Libc ile derlenebiliyor.
- Oluşturulan çalıştırılabilir dosyalar Linux, FreeBSD, MacOS, OpenBSD, NetBSD ve bazı durumlarda Windows üzerinde çalışabiliyor.
- Bu makale, kendi yazılımınızı Cosmopolitan Libc'e taşımaya yönelik adım adım talimatlar sunuyor.
- Yama, sistem değerlerine bağımlı
switch ifadeleri ve yapı başlatmalarındaki sorunları çözüyor.
- Yazar, başlangıçta C önişlemcisi ve
ifdef nedeniyle dönüşümü sed ve Python betikleriyle otomatikleştirmeyi denedi, ancak bu yaklaşım tamamen işe yaramadı.
- Ardından yazar, GCC eklentileri kullanmayı araştırdı ve sorunları çözmek için GCC'nin kendisini yamalama yoluna gitti.
- Yamalanmış GCC sayesinde yazılımlar Cosmopolitan Libc ile derlenebildiği için taşıma süreci daha kolay ve daha sorunsuz hale geliyor.
- Yazar,
luayı başarıyla derledi ve python3.11 içinde ZIP deposuna erişim için değişiklikler yaptı.
- Yazar, dizge dizilerini arama tablosu olarak kullanan
busyboxu derlerken zorluk yaşadı.
- İkili ifadeler nedeniyle
ncurses içinde yapı başlatmaları konusunda da zorluklar vardı.
- Yazar, çoğu durumda yazılımı Cosmopolitan Libc'e taşımak için gereken değişikliklerin asgari düzeyde olduğu sonucuna varıyor.
- Yazar, yamanın kusursuz olmayabileceğini ve bazı sınırlamaları olabileceğini kabul ediyor.
- Yazar, okuyucuları C yazılımlarını Cosmopolitan Libc ile derlemeyi denemeye teşvik ediyor.
- Yazar, çalıştırılabilir dosyaların Windows üzerinde çalışabilme ihtimalinden bahsediyor, ancak bunu test etmediğini belirtiyor.
- Yazar, ek bilgiler ve referanslar sunuyor.
3 yorum
Artık neo, mesajları kod bloğuna sarma formatına mı geçiyor? Yatay kaydırma yapmak gerekmesi ve kırmızı tonlardaki metin renginin biraz hayal kırıklığı yaratması üzücü...
Ah, bunun kod bloğuna alınması bir bug hüzün
Hacker News yorumu
std::error_codekullanımını sorguluyor.EINVALhakkında bir tartışma var.