我试图用LuaJIT的C ffi为C库编写一个Lua绑定,但是遇到了这个问题。
LuaJIT不打印行,而仅设置-mavx2
标志。
以下是重现此问题的步骤:
环境
test.c
#include <stdint.h>
uint64_t aux(const uint64_t b)
{
return b & b;
}
void test(uint64_t state)
{
uint64_t b[64];
for (int i = 0; i < 64; i++)
{
b[i] = (state<<1) ^ state;
}
aux(b[0]);
}
编译为共享库
gcc -W -Wall -Winline -g -fPIC -shared -O3 -o libtest.so test.c # without -mavx2
gcc -W -Wall -Winline -g -fPIC -shared -O3 -mavx2 -o libtest.so test.c # with -mavx2
在LuaJIT中使用库
test.lua
local ffi = require("ffi")
local L = ffi.load("./libtest.so")
ffi.cdef[[
void test(uint64_t);
]]
local s = ffi.new("uint64_t", 0);
print("Hello!")
L.test(s)
print("Hello!")
输出
没有-mavx2
:hello!\nhello\n
符合预期。
使用-mavx2
:hello!\n