0%

作为国内最早的一批PHP程序员,在图形库选用上从最早的GD切换到ImageMagick后再未更换过,其以强大的API,远胜GD的图文能力以及强劲的性能给我留下了深刻的映像。近来因疫情闲来无事,也算是与时俱进,玩起了OpenResty并打算造几个轮子,其中一个轮子需要进行图片处理,作为ImageMagick的忠实粉丝自然要探究一下Lua下的ImageMagick Binding。

我们先从包管理器开始,Lua的主流包管理名为Luarocks,在OpenResty下使用需要先行安装:

Read more »

为了验证前文中的猜测,我写了一个假的dlsym()并连接进sysbench,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>

char *dlerror(void)
{
return "fake error";
}
void *dlopen (const char *__file, int __mode)
{
return NULL;
}

int dlclose (void *__handle)
{
return 0;
}

void *dlsym (void *__restrict __handle, const char *__restrict __name)
{
printf("Fakedl: Looking for %s\n",__name);
return NULL;
}
Read more »

近日在静态编译sysbench时遇到了一个问题,运行编译好的静态可执行文件时报错:

1
2
3
4
5
6
root@test:~/sysbench-1.0.20/src# ./sysbench
sysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta2)

Reading the script from the standard input:

PANIC: unprotected error in call to Lua API ([string "sysbench.sql.lua"]:207: sysbench: undefined symbol: db_destroy)

sysbench内置了LuaJIT解释器用于执行SQL性能测试,动态编译时运行正常,按提示得知错误为符号db_destroy未找到,首先使用readelf打印可执行文件sysbench的符号表看看有没有名叫db_destory的函数:

Read more »