交叉编译sqlite3,生成动态库

1、下载源码,解压缩sqlite-autoconf-3300100.tar.gz

2、进入解压目录,执行:

  #:./configure --host=arm CC=arm-linux-gnueabi-gcc CXX=arm-linux-gnueabi-g++ --prefix=/usr

  其中--host=要运行程序的主机

  CC/CXX为用到的交叉编译工具链

  --prefix=安装目录

3、make

  将在当前文件目录下,自动生成可执行文件sqlite3及静态库文件sqlite3.a文件;

4、sudo make install

  此命令会将可执行文件及静态库文件拷贝至安装目录中(也可手动拷贝)

5、以上步骤生成的可执行文件包含大量调试信息,文件比较大,可使用strip命令去掉其中的调试信息;

  #:arm-linux-gnueabi-strip sqlite3

6、生成动态库文件:

  arm-linux-gnueabi-gcc   sqlite3.c   -lpthread   -ldl   -fPIC    -shared    -o   libsqlite3.so

原文地址:https://www.cnblogs.com/beyonne/p/12143381.html

时间: 2024-10-09 15:11:16

交叉编译sqlite3,生成动态库的相关文章

linux 生成动态库时提示relocation R_X86_64_32 against `.rodata' can not be used when making a shared object;

linux生成动态库时遇到了relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC错误. 由于我的系统是AMD64位的,所以需要在编译的时候添加 -fPIC选项 解决方法: 例如: g++ -c -fPIC head.cpp    生成head.o g++ -fpic -shared -o libfun.so head.o linux 生成

GCC生成动态库

以下内容仅作为本人工作笔记 main.c 1 #include <stdio.h> 2 void hello(void); 3 int main(int argc, char ** argv) { 4 printf("This is main function!\n"); 5 hello(); 6 return 0; 7 } hello.c 1 #include <stdio.h> 2 void hello() { 3 printf("This is

cmake同时生成动态库与静态库的方法

我的目录结构 [[email protected] createLibrary]$ tree . ├── bin ├── build ├── CMakeLists.txt ├── include │   └── person.h ├── lib └── src ├── CMakeLists.txt ├── main │   ├── CMakeLists.txt │   └── main.cpp └── person ├── CMakeLists.txt └── person.cpp 7 dire

Linux生成动态库系统

Linux生成动态库系统 一个.说明 Linux下动态库文件的扩展名为 ".so"(Shared Object). 依照约定,全部动态库文件名称的形式是libname.so(可能在名字中增加版本). 这样.线程函数库被称作libthread.so. 静态库的文件名称形式是libname.a.共享archive的文件名称形式是libname.sa.共享archive仅仅是一种过渡形式,帮助人们从静态库转变到动态库. 小编综合自己学习体会以及网络上较好的内容.以简单的样例介绍动态库文件的生

gcc编译工具生成动态库和静态库之一----介绍

 1.库的分类 根据链接时期的不同,库又有静态库和动态库之分. 静态库是在链接阶段被链接的(好像是废话,但事实就是这样),所以生成的可执行文件就不受库的影响了,即使库被删除了,程序依然可以成功运行. 有别于静态库,动态库的链接是在程序执行的时候被链接的.所以,即使程序编译完,库仍须保留在系统上,以供程序运行时调用.(TODO:链接动态库时链接阶段到底做了什么) 2 静态库和动态库的比较 链接静态库其实从某种意义上来说也是一种粘贴复制,只不过它操作的对象是目标代码而不是源码而已.因为静态库被链接后

Windows下64位SQLite3.10动态库编译

在开始动手编译之前,先让我们对SQLite有一个初步的认识: SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中.它是D.RichardHipp建立的公有领域项目.它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了.它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl.C#.PHP.Java等,还有ODBC接口,同样

HPunix如何生成动态库?

HPunix系统生成动态库编译的方法? 创建PIC中间文件的编译器选项是+z,创建动态库德链接器标志是-b. 1. cc +z d1.c d2.c /* 编译以".o"为扩展名的中间目标文件dl.o和dl2.o 可以同时编译多个.c文件. 2. ld -b -o  dl.so d1.o d2.o /* 根据目标文件d1.o d2.o 创建动态库dl.so 可以有多个目标文件(.o文件) 3. cc dl.so 即生成可执行文件,默认是a.out 4. cc dl.so -o  add 

Linux下RabbitMQ的编译,生成动态库和静态库

一.步骤 1.代码托管处下载代码 最新:https://github.com/alanxz/rabbitmq-c/archive/master.zip 稳定:https://github.com/alanxz/rabbitmq-c/releases/download/v0.5.2/rabbitmq-c-0.5.2.tar.gz 下载到/home/kylin/test/下 2.解压缩至/home/kylin/test/,并进入目录cd /home/kylin/test/rabbitmq-c-...

c#生成动态库并加载

下面这段代码生成dll文件,不能编译运行.点击项目右键,点击生成,这时会在debuge文件中生成相应的配置文件. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Data; using System.Data.OleDb; names