Anda perlu memahami apa itu syscalls. Di Linux, mereka adalah API tanah pengguna serendah mungkin (sebaliknya Win32 API mungkin mencampur syscall kernel nyata dengan beberapa fungsi perpustakaan. libc
juga melakukan campuran seperti itu di Linux). fork(2), execve(2), open(2), pipe(2), mmap(2), read(2), poll(2), close(2), dup2(2), sigaction(2) adalah syscalls penting (tetapi ada sekitar 300 di antaranya, lihat syscalls(2) untuk daftar, yang bergantung pada kernel Linux Anda).
Jangan berharap setiap fungsionalitas Windows tersedia di Linux (dan sebaliknya).
Jangan pernah memikirkan hal yang setara.
Dapatkan pola pikir yang berbeda di Linux.
(Secara khusus, prosesnya sangat berbeda di Linux dan di Windows).
Jangan lupa bahwa Linux adalah perangkat lunak bebas , dan Anda dapat menyelami kode sumber dari setiap fungsi yang Anda gunakan di Linux. Baca, telusuri, perbaiki.....
Baca halaman manual intro(2) terlebih dahulu, dan beberapa halaman manual lainnya (terutama syscalls(2), intro(3) dll...). Baca juga mis. Pemrograman Linux Tingkat Lanjut dan Pemrograman Unix Tingkat Lanjut.
Beberapa perpustakaan mencoba memfaktorkan dan memberikan abstraksi umum untuk Posix (mis. Linux) dan Windows. Khususnya Qt (dan juga Gtk atau FLTK atau POCO, dan Wt untuk aplikasi web, dan sqlite untuk database).
Beberapa perangkat lunak server sumber terbuka (mis. lighttpd, exim, postgresql, dll...) dapat berjalan di Linux dan Windows (tentu saja, setelah dikompilasi ulang)
Jika Anda tertarik dengan antarmuka grafis, pahami peran penting X11 (perhatikan bahwa server X11 paling dekat dengan layar &keyboard; sebagian besar aplikasi grafis adalah klien X11). Pada tahun 2016 atau 2020, X11 cenderung digantikan oleh Wayland (tetapi Anda tidak akan menyadari bahwa implementasi "detail" - yang sangat penting - jika Anda membuat kode melawan Qt atau GTK)
Jika Anda menulis aplikasi hanya menggunakan panggilan Qt dan/atau POCO (yang tidak didokumentasikan sebagai khusus untuk Linux atau Windows) selain fungsi C++ standar, itu harus menjadi sumber portabel dari Linux ke Windows dan sebaliknya.
Jika Anda ingin mem-port aplikasi yang menggunakan panggilan Win32, taruhan terbaik Anda adalah menggunakan WineLib. Ini menggunakan pustaka yang mendukung Wine, tetapi tidak sama dengan hanya menjalankan aplikasi menggunakan Wine -- Anda mengkompilasi ulang aplikasi Anda sebagai aplikasi Linux, hanya menggunakan pustaka bersama WineLib. Ini akan tetap terlihat seperti aplikasi Windows, kecuali jika Anda memodifikasi lapisan UI.
Seperti yang telah dikatakan di tempat lain dalam jawaban, tidak ada persamaan langsung yang nyata dengan Win32 di Linux - bit Win32 yang berbeda disediakan oleh komponen yang berbeda, dan terkadang Anda memiliki pilihan komponen. Hal ini dimungkinkan karena beberapa bagian yang setara dari Win32 diimplementasikan secara native pada level yang lebih rendah -- misalnya, Win32 menyediakan komponen UI, yang setara dengan yang tersedia di GTK, Qt, atau sejumlah toolkit lainnya (seperti WineLib), yang dengan sendirinya berinteraksi dengan X. Sama seperti Anda biasanya menggunakan komponen dari Win32 daripada menggambar sendiri menggunakan panggilan API tingkat rendah, jadi Anda biasanya menggunakan komponen dari toolkit UI tingkat tinggi daripada menggunakan X secara langsung.