交叉编译出来的程序放到luckfoxpico中之后无法运行

  • 买回去重新烧录系统了嘛?正常是不缺这个库文件的
  • Luckfox Taylor wrote: 2024-01-16 6:34 买回去重新烧录系统了嘛?正常是不缺这个库文件的
    我重新烧录系统了,用的是LuckFox Pico Max板子,烧录的ubuntu系统到SD卡中的。

    pico的ubuntu镜像,编译前根据配置修改了gitee源,随后我在虚拟机的ubuntu系统上使用如下官方wiki的代码编译的:

    Code: Select all

    sudo ./build.sh lunch   
    sudo ./build.sh
    然后编译时选择了以下分支:

    Code: Select all

    5. BoardConfig_IPC/BoardConfig-EMMC-Ubuntu-RV1106_Luckfox_Pico_Pro_Max-IPC.mk
    最后编译成功后,再使用瑞芯微工具烧录到sd卡中的,而且已经擦除了SPI NAND Flash。

    关于上面我的运行账号是root是因为:我先是使用了pico账号登录,我怀疑是不是权限的问题,就创建了root账号,之后索性就用root账号来进行测试了。

    至于为什么我怀疑是交叉编译工具的问题,是因为我尝试使用c++来写了一个helloworld.cpp:

    Code: Select all

    #include <iostream>
    int main() {
        std::cout << "Hello, C++ Standard Library!" << std::endl;
        return 0;
    }
    运行结果也会出现错误,错误如下:

    Code: Select all

    root@luckfox:/home/pico/demo# ./helloworld_cpp
    bash: ./helloworld_cpp: No such file or directory
    我尝试ldd如下:

    Code: Select all

    root@luckfox:/home/pico/demo# ldd helloworld_cpp
    	libstdc++.so.6 => /lib/arm-linux-gnueabihf/libstdc++.so.6 (0xa6d60000)
    	libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0xa6d30000)
    	libc.so.0 => not found
    	libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0xa6cd0000)
    	libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xa6ba0000)
    	/lib/ld-uClibc.so.0 => /lib/ld-linux-armhf.so.3 (0xa6ee3000)
    发现虽然也有正确指向c标准库的libc.so.6的依赖,但是仍然提示其缺少libc.so.0。
    所以我不知道我是哪里除了问题,很头大
  • 你好,
    ubuntu系统使用的glibc,而我们工具链为uclibc,所以程序无法通用
    解决方法:
    ubuntu系统请在连接网络后使用apt下载gcc与make,直接在板子上编译即可。
    注:
    使用ubuntu系统会导致RK提供的组件无法使用,如果想要完整使用板子的功能还是建议使用busybox
  • Eng33 wrote: 2024-01-16 8:27 你好,
    ubuntu系统使用的glibc,而我们工具链为uclibc,所以程序无法通用
    解决方法:
    ubuntu系统请在连接网络后使用apt下载gcc与make,直接在板子上编译即可。
    注:
    使用ubuntu系统会导致RK提供的组件无法使用,如果想要完整使用板子的功能还是建议使用busybox
    好的,谢谢!