主要观点:TCC/TinyCC 在使用 __attribute__((section("...")))
放置代码或数据到特定节时可能存在问题,使用 __start_SECTION
和 __stop_SECTION
会出现链接器错误,无需担心,不是用户的问题也不完全是 TCC 的问题。
关键信息:
- 不同编译器(gcc、clang、tcc)对
__attribute__((section("...")))
的处理不同,tcc 会出现链接器错误。 - 解决方法是在代码顶部(包含 glibc 头文件后)添加
#ifdef __TINYC__ #undef __attribute__
片段,可使其正常工作。 - 原因是 glibc 头文件在特定条件下会将
__attribute__
定义为不做任何事,通过#undef __attribute__
可将其注释传递给编译器。
重要细节:通过示例展示了不同编译器的编译结果和 tcc 的错误,以及该解决方法的来源(Allan Wind 在 tcc-devel 邮件列表中发现),作者表示自己搜索时未找到相关提及,希望此贴能帮助遇到相同问题的人避免一些繁琐操作。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。