ToB企服应用市场:ToB评测及商务社交产业平台

标题: rk3568 , buildroot , qt ,利用sqlite, 动态库, 静态库 [打印本页]

作者: 来自云龙湖轮廓分明的月亮    时间: 2025-1-11 08:03
标题: rk3568 , buildroot , qt ,利用sqlite, 动态库, 静态库
问题说明: 客户反馈 ,buildroot 系统 ,利用qt 利用sqlite ,有报错,无法利用sqlite.

测试情况说明: 我自己测试,发现, buildroot 自己默认就是 使能了 sqlite 的。


是否解决说明: 已解决

解决问题的逻辑:
1、首先在buildroot 中使能 sqlite3 , 看看利用命令行不可。
2、 然后写一个C语言看看,能不能利用 sqlite.
3 、然后就是 看看能不能在qt中利用C语言 利用 sqlite 。
4、 然后就是 利用 qt 的自带 的 sqlite 的库了。

方法依据:没有依据,就是测试,正好学习一下 sqlite

解决问题的过程:
疑问: 就是 普通的 sqlite 库 与 qt 自带的 sqlite 的库要怎么选择呢?
有什么区别呢?
疑问: 而且我发现, SDK 中编译好 buildroot 后, 在
rk356x_linux/buildroot/output/rockchip_rk3568/target/usr
目录下 是没有头文件的。
但是将系统烧写到 板卡之后,这个目录 又出现了。

这个问题先不管了。
先继承往下分析。


软件说明: 网盘上的 linux SDK

硬件说明:   焦点板V1.1  +底板V1.7

流程开始: 

先说一下我遇到的问题,首先 我是利用的是 3568 的SDK先编译一遍 buildroot 系统。
里面就编译了 sqlite3 的第三方包。
然后,我写了一个简短的 C的 对 sqlite 的测试程序。
代码如下:
  1.   1 #include <sqlite3.h>
  2.   2 #include <stdio.h>
  3.   3 #include <stdlib.h>
  4.   4
  5.   5
  6.   6 int main(int argc, const char *argv[])
  7.   7 {
  8.   8  sqlite3 * dbSql;
  9.   9 int ret;
  10. 10 char * err;
  11. 11 char ** dataSql;
  12. 12 int n,m,i,j;
  13. 13 char sql[50] = "select * from demo";
  14. 14 if(0 != (ret = sqlite3_open("/root/demo.db",&dbSql))){
  15. 15 printf("open db %s\n",sqlite3_errmsg(dbSql));
  16. 16 exit(1);
  17. 17 }
  18. 18 if(0 != sqlite3_get_table(dbSql,sql,&dataSql,&n,&m,&err)){
  19. 19 printf("get error: %s\n",err);
  20. 20 }
  21. 21 if(0 != n){
  22. 22 for(i=0;i<n+1;i++){
  23. 23 for(j=0;j<m;j++){
  24. 24 printf("%s ",*dataSql);
  25. 25 dataSql++;
  26. 26 }
  27. 27 printf("\n");
  28. 28 }
  29. 29 }else{
  30. 30 printf("Empty!\n");
  31. 31 }
  32. 32 sqlite3_close(dbSql);
  33. 33 return 0;
  34. 34 }
  35. 35
  36. 36
  37. 37
  38. ~
复制代码
我说交叉编译一下吧, 但是报错了。
我的编译命令是这个。
  1. aarch64-linux-gnu-gcc -I /home/topeet/source_code/rk356x_linux/buildroot/output/rockchip_rk3568/build/sqlite-3210000/ -L /home/topeet/source_code/rk356x_linux/buildroot/output/rockchip_rk3568/build/sqlite-3210000/.libs/  -o test_sqlite sqlite_test.c  -lsqlite3
复制代码
报错如下:

  1. root@ubuntu:/home/topeet/source_code# aarch64-linux-gnu-gcc -I /home/topeet/source_code/rk356x_linux/buildroot/output/rockchip_rk3568/build/sqlite-3210000/ -L /home/topeet/source_code/rk356x_linux/buildroot/output/rockchip_rk3568/build/sqlite-3210000/.libs/  -o test_sqlite sqlite_test.c  -lsqlite3
  2. /home/topeet/source_code/rk356x_linux/buildroot/output/rockchip_rk3568/build/sqlite-3210000/.libs//libsqlite3.so: undefined reference to `pthread_join@GLIBC_2.34'/home/topeet/source_code/rk356x_linux/buildroot/output/rockchip_rk3568/build/sqlite-3210000/.libs//libsqlite3.so: undefined reference to `dlsym@GLIBC_2.34'/home/topeet/source_code/rk356x_linux/buildroot/output/rockchip_rk3568/build/sqlite-3210000/.libs//libsqlite3.so: undefined reference to `pthread_mutex_trylock@GLIBC_2.34'/home/topeet/source_code/rk356x_linux/buildroot/output/rockchip_rk3568/build/sqlite-3210000/.libs//libsqlite3.so: undefined reference to `dlclose@GLIBC_2.34'/home/topeet/source_code/rk356x_linux/buildroot/output/rockchip_rk3568/build/sqlite-3210000/.libs//libsqlite3.so: undefined reference to `lstat64@GLIBC_2.33'/home/topeet/source_code/rk356x_linux/buildroot/output/rockchip_rk3568/build/sqlite-3210000/.libs//libsqlite3.so: undefined reference to `fcntl64@GLIBC_2.28'/home/topeet/source_code/rk356x_linux/buildroot/output/rockchip_rk3568/build/sqlite-3210000/.libs//libsqlite3.so: undefined reference to `pthread_mutexattr_destroy@GLIBC_2.34'/home/topeet/source_code/rk356x_linux/buildroot/output/rockchip_rk3568/build/sqlite-3210000/.libs//libsqlite3.so: undefined reference to `pthread_mutexattr_settype@GLIBC_2.34'/home/topeet/source_code/rk356x_linux/buildroot/output/rockchip_rk3568/build/sqlite-3210000/.libs//libsqlite3.so: undefined reference to `dlerror@GLIBC_2.34'/home/topeet/source_code/rk356x_linux/buildroot/output/rockchip_rk3568/build/sqlite-3210000/.libs//libsqlite3.so: undefined reference to `fstat64@GLIBC_2.33'/home/topeet/source_code/rk356x_linux/buildroot/output/rockchip_rk3568/build/sqlite-3210000/.libs//libsqlite3.so: undefined reference to `pthread_mutexattr_init@GLIBC_2.34'/home/topeet/source_code/rk356x_linux/buildroot/output/rockchip_rk3568/build/sqlite-3210000/.libs//libsqlite3.so: undefined reference to `pthread_create@GLIBC_2.34'/home/topeet/source_code/rk356x_linux/buildroot/output/rockchip_rk3568/build/sqlite-3210000/.libs//libsqlite3.so: undefined reference to `stat64@GLIBC_2.33'/home/topeet/source_code/rk356x_linux/buildroot/output/rockchip_rk3568/build/sqlite-3210000/.libs//libsqlite3.so: undefined reference to `dlopen@GLIBC_2.34'
复制代码
目前不知道 报错是什么原因引起的。
先放一放。
然后是我的解决方式。
我是如许解决的,首先我 我觉得 Buildroot 肯定下载了 关于sqlite 的 相关的源码包。
可以看到就是这个。 我手动解压了。


然后我手动编译了一下。
  1. 1099  ./configure --host=aarch64-linux-gnu --prefix=/home/topeet/source_code/sqlite_install
  2. 1100  make
  3. 1101  make install
复制代码
然后 在编译 C的 sqlite 应用程序的时间,利用的这个命令。
这是我利用的编译命令。
  1. 1162  aarch64-linux-gnu-gcc -I /home/topeet/source_code/sqlite_install/include/  -L /home/topeet/source_code/sqlite_install/lib/  -o test_sqlite2 sqlite_test.c  -lsqlite3
复制代码
这是链接的动态库,能不能 利用静态库呢?
答案是不能的, 我在利用的时间出现这个问题。

编译命令:
  1. root@ubuntu:/home/topeet/source_code# aarch64-linux-gnu-gcc -I /home/topeet/source_code/sqlite_install/include/  -L /home/topeet/source_code/sqlite_install/lib/  -o test_sqlite2 sqlite_test.c -lsqlite3  -static
复制代码

报错如下:
  1. root@ubuntu:/home/topeet/source_code# aarch64-linux-gnu-gcc -I /home/topeet/source_code/sqlite_install/include/  -L /home/topeet/source_code/sqlite_install/lib/  -o test_sqlite2 sqlite_test.c -lsqlite3  -static
  2. /home/topeet/source_code/sqlite_install/lib//libsqlite3.a(sqlite3.o): In function `pthreadMutexLeave':/home/topeet/source_code/rk356x_linux/buildroot/dl/sqlite-autoconf-3210000/sqlite3.c:24104: undefined reference to `pthread_mutex_unlock'/home/topeet/source_code/sqlite_install/lib//libsqlite3.a(sqlite3.o): In function `pthreadMutexTry':/home/topeet/source_code/rk356x_linux/buildroot/dl/sqlite-autoconf-3210000/sqlite3.c:24066: undefined reference to `pthread_mutex_trylock'/home/topeet/source_code/sqlite_install/lib//libsqlite3.a(sqlite3.o): In function `pthreadMutexEnter':/home/topeet/source_code/rk356x_linux/buildroot/dl/sqlite-autoconf-3210000/sqlite3.c:24020: undefined reference to `pthread_mutex_lock'/home/topeet/source_code/sqlite_install/lib//libsqlite3.a(sqlite3.o): In function `unixDlClose':/home/topeet/source_code/rk356x_linux/buildroot/dl/sqlite-autoconf-3210000/sqlite3.c:36586: undefined reference to `dlclose'/home/topeet/source_code/sqlite_install/lib//libsqlite3.a(sqlite3.o): In function `unixDlSym':/home/topeet/source_code/rk356x_linux/buildroot/dl/sqlite-autoconf-3210000/sqlite3.c:36582: undefined reference to `dlsym'/home/topeet/source_code/sqlite_install/lib//libsqlite3.a(sqlite3.o): In function `unixDlOpen':/home/topeet/source_code/rk356x_linux/buildroot/dl/sqlite-autoconf-3210000/sqlite3.c:36541: undefined reference to `dlopen'/home/topeet/source_code/sqlite_install/lib//libsqlite3.a(sqlite3.o): In function `sqlite3ThreadCreate':/home/topeet/source_code/rk356x_linux/buildroot/dl/sqlite-autoconf-3210000/sqlite3.c:27396: undefined reference to `pthread_create'/home/topeet/source_code/sqlite_install/lib//libsqlite3.a(sqlite3.o): In function `pthreadMutexFree':/home/topeet/source_code/rk356x_linux/buildroot/dl/sqlite-autoconf-3210000/sqlite3.c:23971: undefined reference to `pthread_mutex_destroy'/home/topeet/source_code/sqlite_install/lib//libsqlite3.a(sqlite3.o): In function `pthreadMutexAlloc':/home/topeet/source_code/rk356x_linux/buildroot/dl/sqlite-autoconf-3210000/sqlite3.c:23927: undefined reference to `pthread_mutexattr_init'/home/topeet/source_code/rk356x_linux/buildroot/dl/sqlite-autoconf-3210000/sqlite3.c:23928: undefined reference to `pthread_mutexattr_settype'/home/topeet/source_code/rk356x_linux/buildroot/dl/sqlite-autoconf-3210000/sqlite3.c:23929: undefined reference to `pthread_mutex_init'/home/topeet/source_code/rk356x_linux/buildroot/dl/sqlite-autoconf-3210000/sqlite3.c:23930: undefined reference to `pthread_mutexattr_destroy'/home/topeet/source_code/rk356x_linux/buildroot/dl/sqlite-autoconf-3210000/sqlite3.c:23938: undefined reference to `pthread_mutex_init'/home/topeet/source_code/sqlite_install/lib//libsqlite3.a(sqlite3.o): In function `sqlite3ThreadJoin':/home/topeet/source_code/rk356x_linux/buildroot/dl/sqlite-autoconf-3210000/sqlite3.c:27416: undefined reference to `pthread_join'/home/topeet/source_code/sqlite_install/lib//libsqlite3.a(sqlite3.o): In function `unixDlError':/home/topeet/source_code/rk356x_linux/buildroot/dl/sqlite-autoconf-3210000/sqlite3.c:36555: undefined reference to `dlerror'
复制代码
先不管它。
我对 普通的C语言程序作了一个测试,
关于动态链接与静态毗连是如许的。


但是为什么 第三方库 ,静态毗连会出现问题,不清楚,先不管它。


然后是将编译好的 C语言的测试程序直接拷贝到开发板进行测试。


可以看到是可以的, 这里 测试程序我并没有 进行 关于头文件,以及 库文件的指定。


然后到这里 我觉的我有必要总结一下 关于 动态库,与静态库的东西。
代码:
头文件。
mylib.h
  1. int Max(int a, int b);
  2. void PrintMaxNumber(int a, int b);
复制代码
库文件。
mylib.c
  1. #include <stdio.h>
  2. int Max(int a, int b)
  3. {
  4.         return (a > b) ? a : b;
  5. }
  6. void PrintMaxNumber(int a, int b)
  7. {
  8.         printf("The max is %d.\n", Max(a, b));
  9. }
复制代码
主文件代码
test.c
  1. #include <stdio.h>
  2. #include "mylib.h"
  3. int main()
  4. {
  5.         int a = 5;
  6.         int b = 3;
  7.         int max = Max(a, b);
  8.         printf("The max number is %d.\n", max);
  9.         PrintMaxNumber(a, b);
  10.         return 0;
  11. }
复制代码


自己编写一个 静态库,
我自己的利用。
  1. 先编译成 .o
  2. root@ubuntu:/home/topeet/source_code# aarch64-linux-gnu-gcc -c mylib.c  -o mylib.o
  3. 然后通过.o 生成 .a 文件。
  4. root@ubuntu:/home/topeet/source_code# aarch64-linux-gnu-ar -rc libmylib.a mylib.o
  5. root@ubuntu:/home/topeet/source_code# ls
  6. libmylib.a    mycode   mylib.h  rk356x_linux                  rk_android11.0_sdk                       sqlite_install  test1  test.c
  7. libsqlite3.a  mylib.c  mylib.o  rk356x_linux_20231106.tar.gz  rk_android11.0_sdk_full_20240918.tar.xz  sqlite_test.c   test2
复制代码
主要是留意 利用的交叉编译器的命令。

自己编写一个动态库。

  1. 编译成 .o 文件
  2. root@ubuntu:/home/topeet/source_code# aarch64-linux-gnu-gcc -c mylib.c  -o mylib2.o -fPIC
  3. 连接成 .so 文件
  4. root@ubuntu:/home/topeet/source_code# aarch64-linux-gnu-gcc -o libmylib.so mylib2.o  -shared
  5. root@ubuntu:/home/topeet/source_code# ls
  6. libmylib.a   libsqlite3.a  mylib2.o  mylib.h  rk356x_linux                  rk_android11.0_sdk                       sqlite_install  test1  test.c
  7. libmylib.so  mycode        mylib.c   mylib.o  rk356x_linux_20231106.tar.gz  rk_android11.0_sdk_full_20240918.tar.xz  sqlite_test.c   test2
复制代码
留意: 动态库与静态库 在链接时间的命令利用的是不一样的。
但是实际上是一样的,
好比我在编译静态库的时间, 利用的是 ar 命令,但是 如果你利用 gcc 的话,它会自动的利用 ar 命令去天生 静态库。

编译的时间,毗连动态库。


编译的时间,毗连静态库。



当静态库与动态库 在同一个目录下的时间, 它会优先选择动态库



然后在总结一下 , 交叉编译器的参数 。




总结:
1  -c 参数指定了 只是编译出.o 文件。
如果有-c 参数的话,就是 已经完成了 c--->汇编--->呆板码的 过程,只是还没有 将.o 文件毗连在一起, 而 没有-c 的话,就是 直接 将 .o 毗连在一起了。
2  -o 参数 是在指定输出的名字, 可以与-c 一起利用,也可以单独利用。
3 -I (incldue)  , 指的是 在搜索头文件的时间, 首先去 /usr/include 目录寻找,如果找不到的话,就去 自己指定的这个目录下寻找。
4  -L , 指的是 指定了库的路径,也是首先去默认的 /usr/lib  目录下寻找,如果找不到的话,就去 你指定的牧区去寻找。
5 -l (小写L) , 指的是 所毗连的文件,既指 动态库,也指静态库, 这两个指定的方式上没有差别,都存在的话,优先选择动态库。




总结:
1 static 是在编译 应用的时间利用的,
2 shared 是在天生 动态库的时间利用的。


疑问: 那么交叉编译器利用的路径是什么呢? 肯定跟 系统本身的 gcc 利用的不是一个路径。

利用的测试命令是。
  1. root@ubuntu:/home/topeet/source_code# echo 'main(){}'| aarch64-linux-gnu-gcc -E -v -
复制代码

结果是。
  1. root@ubuntu:/home/topeet/source_code# echo 'main(){}'| aarch64-linux-gnu-gcc -E -v -
  2. 利用内建 specs。COLLECT_GCC=aarch64-linux-gnu-gcc目的:aarch64-linux-gnu配置为:'/home/tcwg-buildslave/workspace/tcwg-make-release/builder_arch/amd64/label/tcwg-x86_64-build/target/aarch64-linux-gnu/snapshots/gcc.git~linaro-6.3-2017.05/configure' SHELL=/bin/bash --with-mpc=/home/tcwg-buildslave/workspace/tcwg-make-release/builder_arch/amd64/label/tcwg-x86_64-build/target/aarch64-linux-gnu/_build/builds/destdir/x86_64-unknown-linux-gnu --with-mpfr=/home/tcwg-buildslave/workspace/tcwg-make-release/builder_arch/amd64/label/tcwg-x86_64-build/target/aarch64-linux-gnu/_build/builds/destdir/x86_64-unknown-linux-gnu --with-gmp=/home/tcwg-buildslave/workspace/tcwg-make-release/builder_arch/amd64/label/tcwg-x86_64-build/target/aarch64-linux-gnu/_build/builds/destdir/x86_64-unknown-linux-gnu --with-gnu-as --with-gnu-ld --disable-libmudflap --enable-lto --enable-shared --without-included-gettext --enable-nls --disable-sjlj-exceptions --enable-gnu-unique-object --enable-linker-build-id --disable-libstdcxx-pch --enable-c99 --enable-clocale=gnu --enable-libstdcxx-debug --enable-long-long --with-cloog=no --with-ppl=no --with-isl=no --disable-multilib --enable-fix-cortex-a53-835769 --enable-fix-cortex-a53-843419 --with-arch=armv8-a --enable-threads=posix --enable-multiarch --enable-libstdcxx-time=yes --enable-gnu-indirect-function --with-build-sysroot=/home/tcwg-buildslave/workspace/tcwg-make-release/builder_arch/amd64/label/tcwg-x86_64-build/target/aarch64-linux-gnu/_build/sysroots/aarch64-linux-gnu --with-sysroot=/home/tcwg-buildslave/workspace/tcwg-make-release/builder_arch/amd64/label/tcwg-x86_64-build/target/aarch64-linux-gnu/_build/builds/destdir/x86_64-unknown-linux-gnu/aarch64-linux-gnu/libc --enable-checking=release --disable-bootstrap --enable-languages=c,c++,fortran,lto --build=x86_64-unknown-linux-gnu --host=x86_64-unknown-linux-gnu --target=aarch64-linux-gnu --prefix=/home/tcwg-buildslave/workspace/tcwg-make-release/builder_arch/amd64/label/tcwg-x86_64-build/target/aarch64-linux-gnu/_build/builds/destdir/x86_64-unknown-linux-gnu线程模型:posixgcc 版本 6.3.1 20170404 (Linaro GCC 6.3-2017.05)COLLECT_GCC_OPTIONS='-E' '-v' '-march=armv8-a' '-mlittle-endian' '-mabi=lp64' /home/topeet/source_code/rk356x_linux/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/../libexec/gcc/aarch64-linux-gnu/6.3.1/cc1 -E -quiet -v -imultiarch aarch64-linux-gnu -iprefix /home/topeet/source_code/rk356x_linux/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/6.3.1/ -isysroot /home/topeet/source_code/rk356x_linux/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/../aarch64-linux-gnu/libc - -march=armv8-a -mlittle-endian -mabi=lp64忽略重复的目录“/home/topeet/source_code/rk356x_linux/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/../../lib/gcc/aarch64-linux-gnu/6.3.1/include”忽略不存在的目录“/home/topeet/source_code/rk356x_linux/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/../aarch64-linux-gnu/libc/usr/local/include/aarch64-linux-gnu”忽略不存在的目录“/home/topeet/source_code/rk356x_linux/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/../aarch64-linux-gnu/libc/usr/local/include”忽略重复的目录“/home/topeet/source_code/rk356x_linux/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/../../lib/gcc/aarch64-linux-gnu/6.3.1/include-fixed”忽略重复的目录“/home/topeet/source_code/rk356x_linux/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/../../lib/gcc/aarch64-linux-gnu/6.3.1/../../../../aarch64-linux-gnu/include”忽略不存在的目录“/home/topeet/source_code/rk356x_linux/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/../aarch64-linux-gnu/libc/usr/include/aarch64-linux-gnu”#include "..." 搜索从这里开始:#include <...> 搜索从这里开始: /home/topeet/source_code/rk356x_linux/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/6.3.1/include /home/topeet/source_code/rk356x_linux/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/6.3.1/include-fixed /home/topeet/source_code/rk356x_linux/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/6.3.1/../../../../aarch64-linux-gnu/include /home/topeet/source_code/rk356x_linux/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/../aarch64-linux-gnu/libc/usr/include搜索列表结束。# 1 "<stdin>"# 1 "<built-in>"# 1 "<命令行>"# 31 "<命令行>"# 1 "/home/topeet/source_code/rk356x_linux/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/libc/usr/include/stdc-predef.h" 1 3 4# 32 "<命令行>" 2# 1 "<stdin>"main(){}COMPILER_PATH=/home/topeet/source_code/rk356x_linux/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/../libexec/gcc/aarch64-linux-gnu/6.3.1/:/home/topeet/source_code/rk356x_linux/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/../libexec/gcc/aarch64-linux-gnu/:/home/topeet/source_code/rk356x_linux/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/../libexec/gcc/:/home/topeet/source_code/rk356x_linux/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/6.3.1/../../../../aarch64-linux-gnu/bin/LIBRARY_PATH=/home/topeet/source_code/rk356x_linux/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/6.3.1/:/home/topeet/source_code/rk356x_linux/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/:/home/topeet/source_code/rk356x_linux/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/:/home/topeet/source_code/rk356x_linux/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/6.3.1/../../../../aarch64-linux-gnu/lib/../lib64/:/home/topeet/source_code/rk356x_linux/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/6.3.1/../../../../aarch64-linux-gnu/lib/:/home/topeet/source_code/rk356x_linux/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/../aarch64-linux-gnu/libc/lib/:/home/topeet/source_code/rk356x_linux/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/../aarch64-linux-gnu/libc/usr/lib/COLLECT_GCC_OPTIONS='-E' '-v' '-march=armv8-a' '-mlittle-endian' '-mabi=lp64'root@ubuntu:/home/topeet/source_code#
复制代码

可以看到 这个 LIBRARY_PATH ,确实 不是 系统本身 的路径, 这个是 交叉编译器 压缩包本身的路径。

来分析一下 这个命令的含义。
 echo 'main(){}'| aarch64-linux-gnu-gcc -E -v -


感觉像是写了一个 c 语言程序,交给 交叉编译器去测试了。

好了,到这里就总结完毕了。



参考资料: 
根本上是一些个网上的资料。
Qt应用开发(3)——qt sqlite配置以及qt官方例程编译测试_buildroot编译qt的sqlite3-CSDN博客
嵌入式开发-linux根文件系统(一)sqlite_buildroot sqlite-CSDN博客
嵌入式开发-linux根文件系统(一)sqlite_buildroot sqlite-CSDN博客
《迅为 6818 利用手册》



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4