我想爲使用GCC的共享庫創建預編譯的頭文件。進行必要的配置,並試圖建立後,我得到了這些警告:使用GCC的共享庫項目的預編譯頭文件
cc1plus: warning: ./PrecompiledHeaders.h.gch/.c++: created and used with different settings of -fpic [enabled by default]
過了一段時間的搜索,我發現這段代碼,這似乎表明,PCH不共享代碼的工作:
/* -fpic and -fpie also usually make a PCH invalid. */
if (data[0] != flag_pic)
return _("created and used with different settings of -fpic");
if (data[1] != flag_pie)
return _("created and used with different settings of -fpie");
data += 2;
因此,我將庫改爲靜態庫,錯誤消失,編譯時間減少!那麼是不是有可能擁有共享庫的PCH?如果是的話,有沒有解決這個問題?
謝謝評論。請參閱我剛添加的答案,如果您對此有任何評論,請告訴我。 – Rafid 2013-05-12 17:40:24
'-fPIC'是x86_64共享對象的唯一選項。我對複雜的細節不太熟悉,但是您可以在這裏找到更多信息和鏈接:http://stackoverflow.com/questions/3961446/why-does-gcc-not-implicitly-supply-the-fpic- flag-when-compiling-static-librarie - 這就是爲什麼我說'使用相同的選項'而不是告訴你到底應該添加什麼標誌 - 確切的選項取決於你的架構。 – Mat 2013-05-12 17:55:20