我想使用基於autoconf的構建系統將內部符號的符號隱藏添加到現有庫。探尋本地編譯器的等價物-fvisibility=hidden
和__attribute__ ((visibility("default")))
的最佳方法是什麼?在autoconf中探測符號可見性擴展的最佳實踐
2
A
回答
3
我不認爲這是一個標準的宏,但是這裏是你應該能夠根據需要擴展以支持其他編譯器的東西,例如, __hidden
對於Sun編譯:
AC_CACHE_CHECK([for __attribute__((visibility("hidden")))],
ac_cv_hidden_visibility_attribute, [
echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1; }' > conftest.c
ac_cv_hidden_visibility_attribute=no
if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD);
then
if grep '\.hidden.*foo' conftest.s >/dev/null;
then
ac_cv_hidden_visibility_attribute=yes
fi
fi
rm -f conftest.*
])
if test $ac_cv_hidden_visibility_attribute = yes;
then
AC_DEFINE(HAVE_HIDDEN_VISIBILITY_ATTRIBUTE, 1,
[Define if __attribute__((visibility("hidden"))) is supported.])
fi
產生的config.h
:
/* Define if __attribute__((visibility("hidden"))) is supported. */
#define HAVE_HIDDEN_VISIBILITY_ATTRIBUTE 1
0
你可以嘗試使用<sys/cdefs.h>
與宏觀__hiden
相關問題
- 1. Firefox擴展 - 最佳實踐
- 2. Moneydance擴展開發的最佳實踐
- 3. XML最佳實踐:規劃可擴展性
- 4. Swift UIColor擴展最佳實踐
- 5. 在java中擴展實用程序類的最佳實踐
- 6. Java線程可見性 - 沒有顯式同步的最佳可見性實踐
- 7. JPA在擴展持久性上下文中管理實體的最佳實踐
- 8. 什麼是使佈局可擴展的最佳實踐?
- 9. 在Ruby中擴展類的最佳實踐是什麼?
- 10. 具有類可見性的最佳實踐
- 11. C#:擴展方法和Not運算符最佳實踐
- 12. 序列號最佳實踐
- 13. 可訪問性最佳實踐
- 14. Silverlight - 通知可用性最佳實踐
- 15. WinForms可用性和最佳實踐
- 16. 最佳實踐常見的進口
- 17. JSON屬性最佳實踐
- 18. 在MySQL表中存儲可擴展選項列表?最佳實踐?
- 19. 擴展應用程式iPhone 5 - 最佳實踐現在
- 20. python中是否有可擴展的魔術方法的最佳實踐?
- 21. ScalaSpark中的屬性的最佳實踐
- 22. 可讀性和IF塊括號:最佳實踐
- 23. 瀏覽器擴展中標識符/類名稱的最佳實踐
- 24. 擴大Divs的最佳實踐
- 25. 需要一些最佳實踐意見
- 26. PHP翻譯類 - 最佳實踐意見
- 27. 擴展動態模板的最佳實踐?
- 28. 擴展CGIHTTPRequestHandler或BaseHTTPRequestHandler。解析請求的最佳實踐
- 29. Mean.io - 擴展用戶模型的最佳實踐
- 30. 爲VSTS擴展提供用戶配置的最佳實踐