samba-3.3.16 在海思平台(SS528)交叉编译及问题解决

这篇具有很好参考价值的文章主要介绍了samba-3.3.16 在海思平台(SS528)交叉编译及问题解决。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


samba-3.3.16 在海思平台(SS528)交叉编译及问题解决

一、概述

远程开关机功能需要用到samba里面的一个工具net,所以需要交叉编译samba,并将该工具放到SS528海思开发板上运行。由于新的代码太大且 3.3.16 的版本已经够用,所以就没用最新的代码。

编译系统:Linux virtual-machine 5.4.0-84-generic #94~18.04.1-Ubuntu SMP Thu Aug 26 23:17:46 UTC 2021
编译器:aarch64-mix210-linux-gcc (gcc version 7.3.0 (20220321) )
编译源码:samba-samba-3.3.16

  • 源码在 gitee下载地址:https://gitee.com/AndroidTony/samba/tags?page=27
  • 在 GitHub 的下载地址:https://github.com/samba-team/samba/releases/tag/samba-3.3.16

本文只要介绍 amba-samba-3.3.16.zip怎么交叉编译,以及在编译过程中遇到的三个问题怎样解决。

samba-3.3.16 在海思平台(SS528)交叉编译及问题解决

二、编译步骤

👉2.1 解压缩,进入源码目录

unzip samba-samba-3.3.16.zip
cd samba-samba-3.3.16/source/

👉2.2 配置

source目录,先执行./autogen.sh生成configure,然后配置

./autogen.sh
./configure --prefix=`pwd`/../../result_samba CC=aarch64-mix210-linux-gcc --host=aarch64-mix210-linux --enable-static --enable-shared=no
  • --prefix=pwd/../../result_samba:指定安装目录在../../result_samba
  • CC=aarch64-mix210-linux-gcc:指定编译器,--host指定运行主机;
  • --enable-static:允许编译静态库
  • --enable-shared=no:不允许编译动态态库

👉2.3 问题一

报错

报错:machine 'aarch64-mix210' not recognized
samba-3.3.16 在海思平台(SS528)交叉编译及问题解决

错误原因分析:

错误原因分析:
aarch64-mix210 不被识别,这是指明运行主机的,尝试改成其他。

解决方案:

解决方案:
改为 --host=arm-mix210-linux,改完命令如下:

./configure --prefix=`pwd`/../../result_samba CC=aarch64-mix210-linux-gcc --host=arm-mix210-linux --enable-static --enable-shared=no

👉2.4 问题二

报错

报错:cannot run test program while cross compiling
错误打印如下:

checking that the C compiler understands volatile... yes
checking that the C compiler understands negative enum values... configure: error: in `/home/samba/01_libCompile/002_samba/samba-samba-3.3.16/source':
configure: error: cannot run test program while cross compiling
See `config.log' for more details

错误原因分析:

错误原因分析:
从打印看,是交叉编译时无法运行测试程序,交叉编译的程序肯定无法在Ubuntu运行,想办法规避。
1、执行grep "checking that the C compiler understands negative enum values" -rnw ./,查看为什么会打印这个,搜索结果如下:

./configure:7289:{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that the C compiler understands negative enum values" >&5
./configure:7290:$as_echo_n "checking that the C compiler understands negative enum values... " >&6; }
./config.log:4462:configure:7289: checking that the C compiler understands negative enum values

2、通过搜索结果可以看到打印在./configure:7290,执行命令vi ./configure +7290打开该位置,看到只要 samba_cv_CC_NEGATIVE_ENUM_VALUES没设置值就会执行else去运行测试程序,我们要设法跳过这个判断。

7291 if ${samba_cv_CC_NEGATIVE_ENUM_VALUES+:} false; then :
7292   $as_echo_n "(cached) " >&6
7293 else

解决方案:

解决方案:
./configure 命令前加上samba_cv_CC_NEGATIVE_ENUM_VALUES=yes

samba_cv_CC_NEGATIVE_ENUM_VALUES=yes ./configure --prefix=`pwd`/../../result_samba CC=aarch64-mix210-linux-gcc --host=arm-mix210-linux --enable-static --enable-shared=no

👉2.5 问题三

报错:

报错:cannot run test program while cross compiling

samba-3.3.16 在海思平台(SS528)交叉编译及问题解决

checking for creat64... yes
checking for prctl... yes
configure: error: in `/home/samba/01_libCompile/002_samba/samba-samba-3.3.16/source':
configure: error: cannot run test program while cross compiling
See `config.log' for more details

错误原因分析:

错误原因分析:

错误原因和上个问题一样,也是运行时交叉编译的测试程序

1、先搜索checking for prctl,查看为什么会打印这个,

grep "checking for prctl" -rnw ./
./config.log:67357:configure:15050: checking for prctl

2、通过搜索结果可以看到在configure:15050会检查prctl,执行命令vi ./configure +15050打开该位置,然后往下翻,大概在15090的位置看到执行测试程序的代码,我们要设法跳过这些语句。

15085 case "$host_os" in
15086     *linux*)
15087        # glibc <= 2.3.2 has a broken getgrouplist
15088        if test "$cross_compiling" = yes; then :
15089   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
15090 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
15091 as_fn_error $? "cannot run test program while cross compiling
15092 See \`config.log' for more details" "$LINENO" 5; }
15093 else

解决方案

解决方案:

我的解决办法是注释掉这些语句,注释后如下图:
samba-3.3.16 在海思平台(SS528)交叉编译及问题解决
然后继续执行如下配置命令:

samba_cv_CC_NEGATIVE_ENUM_VALUES=yes ./configure --prefix=`pwd`/../../result_samba CC=aarch64-mix210-linux-gcc --host=arm-mix210-linux --enable-static --enable-shared=no

配置以后,直接执行make && make install,编译通过。

samba-3.3.16 在海思平台(SS528)交叉编译及问题解决
如果文章有帮助的话,点赞👍、收藏⭐,支持一波,谢谢 😁😁😁文章来源地址https://www.toymoban.com/news/detail-464469.html

到了这里,关于samba-3.3.16 在海思平台(SS528)交叉编译及问题解决的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 海思SD3403/SS928开发(一)简介

    SD3403/SS928是一颗面向监控市场推出的专业 ultra-HD Smart IP Camera SOC。 SD3403/SS928处理器核心具有四核ARM Cortex-A55@ 1.2GHz,32KB I-Cache,32KB D-Cache,512KB L3 Cache,该芯 片最高支持四路 sensor 输入,支持最高 4K60 的 ISP 图像处理能力,支持 3F WDR、 多级降噪、六轴防抖、硬件拼接等多种图像

    2024年02月11日
    浏览(43)
  • ubuntu 18.04 LTS交叉编译opencv 3.4.16并编译工程[全记录]

    参考博文: https://blog.csdn.net/qq_54199287/article/details/133780829?spm=1001.2014.3001.5506 如果遇到安装libjasper-dev错误,可参考博文: https://blog.csdn.net/lyc_daniel/article/details/133439255?spm=1001.2014.3001.5501 https://opencv.org/releases/ 放到home路径下的Exe文件夹(专门放用户安装的软件)中,其中build是后

    2024年02月04日
    浏览(56)
  • 跨平台编译go(交叉编译)

    以将一个简单的go http 部署到docker为例! Dockerfile文件 docker build . -t goweb_app docker run -p 8888:8888 goweb_app 在最终的镜像中是不需要go编译器的,也就是说只需要一个运行最终二进制文件的容器即可。 Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序。 golang中跨平台

    2024年02月07日
    浏览(86)
  • Qt交叉编译到arm平台

    从网上下载对应版本的Qt源码 https://download.qt.io/archive/qt/5.9/5.9.3/single/,我下载的是5.9.3的版本。 解压到ubuntu上 下载使用gcc 4.9.4编译器,并配置环境变量。(尽量选择高版本编译器) 配置Qt相关的编译器,使用linux-arm-gnueabi前缀, cd qtbase/mkspecs 修改qmake.conf文件,更改编译器为

    2024年02月11日
    浏览(53)
  • live555交叉编译(ubuntu+arm平台)

    1.下载源码 ​​​​​​http://live555.com/liveMedia/public/live555-latest.tar.gz 2.解压 tar -zxvf live555-latest.tar.gz 3.修改配置文件 1)进入live文件夹 2)复制一份配置文件 cp config.armlinux config.myarmlinux chmod 777 config.myarmlinux 3) vim config.myarmlinux 命令行-删除全部配置 4) 修改为 5.编译执行

    2024年02月05日
    浏览(60)
  • go语言终端交叉编译的事项windows编译其它平台软件包

    windows编译窗口目前分为 cmd窗口 ,powershell窗口,这两个里面运行的命令不一样。 1.cmd窗口编译; 在windows10之前的系统版本上使用cmd命令行可以使用命令 CMD命令行中 在CMD命令行中编译(示例编译64位linux程序),【打开一个cmd窗口一行行执行下面的命令;】 // 设置Linux编译环

    2024年02月16日
    浏览(69)
  • 基于Linux平台交叉编译 flutter arm64应用

        操作系统ubuntu 20.04,开发工具Android Studio + Flutter,运行平台RK3566 Linux。截止现在Flutter官方尚未正式对Linux arm64进行支持,仅有flutter-elinux可用。开发环境的搭建过程遇到了很多的坑,幸运的是最终完成了。为避免后来者再次浪费时间,特撰此文以飨读者。     本文仅记

    2024年02月06日
    浏览(81)
  • 【一、搭建通用Arm平台的QT交叉编译环境】

    为实现目标嵌入式平台能够正常运行Qt程序,则需要在目标平台上部署QT运行环境。 Ubuntu系统,本文使用的是20.04版本 arm平台通用交叉编译工具链 QT源码 1.下载工具链 点击链接https://releases.linaro.org/components/toolchain/binaries/latest-7/arm-linux-gnueabi/,选择下图中标识的文件进行下载。

    2023年04月16日
    浏览(45)
  • Windows平台visual studio与树莓派跨平台交叉编译opencv

    由于架构差异,opencv在Windows平台下编译的程序无法直接移植到树莓派环境使用,所以需要进行Cmake和跨平台的交叉编译。网上包括官方文档很多足够参考,但配置过程中依然会出现个性问题,以下是本人基于windows下使用visual studio2017集成开发环境进行交叉编译环境配置过程中

    2024年04月11日
    浏览(47)
  • ubuntu 20.04 aarch64 平台交叉编译 opencv

    win10 64 位 VMware Workstation Pro 16 虚拟机 虚拟机安装 ubuntu 20.04 opencv 版本: 来自 github 当前最新 4.7 交叉编译 opencv,用于 嵌入式 aarch64 平台 可以直接从 github 下载 release 版本或者 使用 git clone 最新的 opencv 仓库 github opencv https://github.com/opencv/opencv git clone https://github.com/opencv/openc

    2024年02月09日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包