在計算機領域中,地址無關代碼 (英文: position-independent code,縮寫為PIC),又稱地址無關可執行文件 (英文: position-independent executable,縮寫為PIE) ,是指可在主存儲器中任意位置正確地運行,而不受其絕對地址影響的一種機器碼。PIC廣泛使用於共享庫,使得同一個庫中的代碼能夠被加載到不同進程的地址空間中。PIC還用於缺少內存管理單元的計算機系統中, [1] 使得操作系統能夠在單一的地址空間中將不同的運行程序隔離開來。
地址無關代碼能夠在不做修改的情況下被復制到內存中的任意位置。這一點不同於重定位代碼,因為重定位代碼需要經過鏈接器或加載器的特殊處理才能確定合適的運行時內存地址。 地址無關代碼需要在源代碼級別遵循一套特定的語義,並且需要編譯器的支持。那些引用了絕對內存地址的指令(比如絕對跳轉指令)必須被替換為PC相對尋址指令。這些間接處理過程可能導致PIC的運行效率下降,但是目前大多數處理器對PIC都有很好的支持,使得這效率上的這一點點下降基本可以忽略。
C++靜態庫與動態庫
這篇文章非常詳細,簡單,超好:https://www.cnblogs.com/skynet/p/3372855.html
