尝试使用gcc在linux上编译模块

时间:2013-02-16 09:54:25

标签: linux gcc ubuntu compilation

这是编译时遇到的错误:

b-spec / BS_Linux_Dynamic.cpp:57:11:错误:'('令牌)之前的预期构造函数,析构函数或类型转换 make [1]: * [Release / b-spec / BS_Linux_Dynamic.o]错误1 make [1]:离开目录`/home/mm/Плот/metamod-1.19/src' make:* [all]错误2

这里是来源: http://pastebin.com/rhpPrmHv

感谢您的回复!

2 个答案:

答案 0 :(得分:3)

问题在于:

__declspec(naked) void CheckProtocol_AsmHelper_LDyn() {

这不会编译,因为__declspec(naked)gcc不支持的Microsoft扩展程序。

请参阅Equivalent of __declspec( naked ) in gcc/g++

答案 1 :(得分:1)

为什么不使用asm()代替__asm{}?由于linux内核也是这样做的,为什么不呢。另外,为什么使用c ++编写内核模块?

哦!并使用__attribute__((naked))

编辑:

您需要以分号结束对asm()的每次调用。此外,asm()将字符串作为参数,因此您需要引用汇编代码。您还需要使用\n\t来指示这些字符串中的标签和换行符。