دوست من همهی برنانه ها از api استفاده می کنن حتی .net هم یه wrapper برای api هستش

و Api لینوکس با windows با هم فرق دارن ( از همون لحاظ که منظورتونه)

و اگه یه برنامه رو native بنویسی نه قابل انتقال نیست( البته بماند که این محیط رو شبیه سازی می کنن: wine ..)

و اگه با .net یا java یا یه زبان مفسری باشه امکان انتقال هستش چون محیط اجرای این برنامه ها ( virtual machine ) رو توی محیط دوم پیاده سازی شده ( یادت باشه این نوع برنامه های تحت ماشین مجازی هستن و خبر از وجود api ندارن { البته بازم حالت های مخطلف وجود داره استفاده از dllimport و Java Native Interface که پورتابل بودن رو با مشکل رو به رو می کنن})

و حالت دیگه ای می مونه مثل QT که اگه شما کاملا قوانین framework رو رعایت کنید برنامتون پورتابل می شه

و نکتهی اخر کد های استاندارد c/C++‎‎ در سطح کد پورتابل هستش

( هر چی نوشتم رو نخوندم امید وارم اشکال نداشته باشه)