linux 下用node 编译带有sqlite3的C语言文件

最新接手了一个项目精算问题,由于精算部分是c语言做的,而精算的输入是通过typescript 传入 (关于ts这里不讨论),所以需要 将c语言编译后,放在node中运行

首先安装node ,npm,也可以使用 安装nvm 来管理node。

这时你要检查一下你linux系统, 使用命令 cat /proc/version

参考链接 https://www.cnblogs.com/opensmarty/p/10936315.html

接着就是根据不同 linux系统安装 软件 

参考链接 https://www.cnblogs.com/linuxAndMcu/p/10717565.html#_label5

我们使用的node-gyp编译,通过将C语言传入C++,然后使用 node-addon-api 编译 C++ ,最后通过node-gyp命令生成一个.node后缀的文件,将其导入node工程,通过require引入就能使用了。  不会的可以下面留言。

参考链接 https://juejin.cn/post/6844903971220357134

https://nodejs.org/api/n-api.html#n_api_functions_to_convert_from_n_api_to_c_types,

将C语言引入C++需要 进行一点改变。 参考链接: c++调用c函数  

普通c语言的调用上面就可以了,下面是在c文件中 引入 sqlite3.h 的处理。

首先检查一下linux中的 sqlite3 的位置 ,命令: which sqlite3 或者 find -name sqlite3

然后检查是否有sqlite3的库文件 。参考 链接 

 https://www.cnblogs.com/hnrainll/archive/2011/09/08/2170489.html


我这里没有 ,需要安装, 参考链接

 https://blog.csdn.net/weixin_36474001/article/details/116681471

安装之后 在 根目录 使用命令 检查  库文件,头文件是否已经有了

find -name libsqlitee3.a  , find -name sqlite3.h

接着运行,报错

make: 进入目录“/opt/1_hello_world/build”

  CC(target) Release/obj.target/addon/node-addon-api/person/Person.o

  CXX(target) Release/obj.target/addon/hello.o

make: g++:命令未找到

make: *** [Release/obj.target/addon/hello.o] 错误 127


接着安装 gcc-c++.x86_64 ,参考链接

https://www.cnblogs.com/kerrycode/p/4748606.html

好了,再运行就ok了

demo地址    demo。有问题请在下面留言

你可能感兴趣的:(linux 下用node 编译带有sqlite3的C语言文件)