Persiapkan diri Anda, pertanyaan ini kemungkinan akan tampak naif dan / atau bodoh, mengingat saya relatif baru dalam pekerjaan sistem unix like, dan pemrograman pada umumnya.
Siap? Baik! Saya akan melalui sekitar 3 level ludicrosity, meningkat seiring berjalannya waktu.
Kami memiliki dua sistem dengan perangkat keras yang sama (titik utama adalah prosesor, katakanlah duo intel core 2 standar).
Satu berjalan (masukkan distro linux Anda di sini: Ubuntu akan digunakan untuk selanjutnya), dan yang lainnya sedang berjalan katakanlah Mac OS X.
Seseorang mengkompilasi program yang setara, Mari kita katakan sesuatu seperti:
int main()
{
int cat = 33;
int dog = 5*cat;
return dog;
}
Kode ini sangat sederhana, karena saya belum ingin mempertimbangkan implikasi dari shared library.
Ketika dikompilasi pada sistem masing-masing. Bukankah perbedaan utama antara output soal ELF vs Mach-O? Jika seseorang melucuti setiap biner dari format, meninggalkan biner datar, bukankah instruksi mesin yang dibongkar akan sama? (dengan mungkin beberapa perbedaan tergantung pada kebiasaan / kecenderungan penyusun).
1.) Jika seseorang mengembangkan program untuk mengemas ulang biner datar yang dihasilkan dari sistem Ubuntu kami, dalam pemformatan Mach-O, apakah program itu akan berjalan di sistem Mac OS X? Kemudian, jika seseorang hanya memiliki biner yang dikompilasi dari program yang seharusnya di atas, dan satu memiliki alat mistis ini untuk mengemas ulang binari datar, akankah program sederhana dapat berjalan pada sistem Mac OS X?
Sekarang mari kita sedikit lebih jauh.
Kami sekarang memiliki program dengan sumber seperti:
#include <stdio.h>
int main()
{
printf("I like tortoises, but not porpoises");
return 0;
}
2.) Dengan asumsi program ini dikompilasi dan dihubungkan secara statis, apakah program ajaib kami masih dapat mengemas ulang biner mentah dalam format Mach-O dan membuatnya bekerja pada mac os X? Karena tidak perlu bergantung pada binari lain, (yang sistem mac tidak akan miliki dalam kasus ini)
Dan sekarang untuk level terakhir;
3.) Bagaimana jika kita menggunakan program yang diharapkan ini untuk mengonversi semua pustaka bersama yang diperlukan ke format Mach-O, dan kemudian mengkompilasi program di atas dengan tautan dinamis. Apakah program masih berhasil dijalankan?
Seharusnya untuk saat ini, jelas setiap langkah absurditas bergantung pada basis sebelumnya, bahkan masuk akal. jadi jika pilar pertama dihancurkan, saya ragu akan ada banyak manfaat untuk tingkatan yang tersisa.
Saya pasti tidak akan berpikir sejauh ini dengan program-program dengan GUI dalam pikiran. Sistem windowing kemungkinan akan menjadi sakit kepala lainnya. Saya hanya mempertimbangkan program baris perintah pada tahap ini.
Sekarang, saya mengundang dunia untuk mengoreksi saya, dan memberi tahu saya segala sesuatu yang salah dengan garis pemikiran saya yang absurd.