linux libfcmain.so,Ubuntu18.04 安装工具包及问题解决记录

本文档提供了Ubuntu18.04环境下嵌入式开发的基础配置流程,包括硬盘分区挂载、软件包安装、内核编译过程中遇到的问题及解决方案,以及CUDA与TensorFlow的安装配置细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Ubuntu18.04 添加一个硬盘分区并挂载

vi /etc/fstab

UUID=c9fc6df3-ad92-4e07-a225-639828535cd8 /home/dennis/sda ext4 defaults 0 2

Ubuntu18.04精简版安装Packages

install_packages.sh

#! /bin/bash

packages=(net-tools samba vim ssh git default-jdk libncurses5-dev libncursesw5-dev)

#Loop install packages

echo "start to install packages:"${packages[*]}

for var in ${packages[*]}

do

sudo apt install $var

done

Ubuntu Linux制作Patches + Patch

资料参考:差异文件(diff)和补丁文件(patch)简介

若需要把一方不存在的文件也打包到Patch中,则需要 “-N”

diff -Naur sources-orig/ sources-fixed/ >myfixes.patch

若不需要即只Patch 内容不同的部分,则只需要 “-ur”

diff -ur sources-orig/ sources-fixed/ >myfixes.patch

比如 A501 Driver source files:

diff -ur sources/ a501.sf/ > a501.src.patch

Patch 代码:

进入代码工程目录(如A501 sources/)

patch -p1 < ../a501.src.patch

1:如果当前的目录是和kernel-4.9 同级目录:

$patch -p0 < ../a501.src.patch

2:如果当前的目录为 kernel-4.9/:

[kernel-4.9]$patch -p1 < ../a501.src.patch

3:如果当前的目录为 kernel-4.9/drivers/:

[drivers]$patch -p2 < ../a501.src.patch

Bug001.Ubuntu 编译Jetson 内核报错:

scripts/kconfig/lxdialog/dialog.h:32:20: fatal error: curses.h: No such file or directory

解决:

sudo apt-get install libncurses5-dev libncursesw5-dev

Bug002.安装CUDA+TensorFlow后 Import FAIL:

dennis@dennis:~$ python3

Python 3.6.7 (default, Oct 22 2018, 11:32:17)

[GCC 8.2.0] on linux

Type "help", "copyright", "credits" or "license" for more information.

>>> import tensorflow

python3: Relink `/lib/x86_64-linux-gnu/libudev.so.1' with `/lib/x86_64-linux-gnu/librt.so.1' for IFUNC symbol `clock_gettime'

解决:

通过NVIDIA SDKManager 仅安装了CUDA-10.0,但未安装cuDNN,需要从NVIDIA 网站下载对应的cuDNNLibrary并安装即可解决:

cuDNN-Download

dennis@dennis:~$ python3 -c "import tensorflow as tf; print(tf.__version__)"

1.13.1

9c5abdbdd561

image.png

Bug003. gcc-4.8.5编译TX2 报错

dennis@dennis:~/jetson/JetPack-L4T-3.2/64_TX2/Linux_for_Tegra/sources/kernel/kernel-4.4$ ./make.kernel.sh

Aborted (core dumped)

Aborted (core dumped)

原因:

解决:

sudo apt-get upgrade locales

LANG=/usr/lib/locale/en_US

sudo vim /etc/locale.gen (检查locale 是否为en_US)

完整Terminal compile log

dennis@dennis:~/sda/home/dennis/JetPack-L4T-3.2/64_TX2/Linux_for_Tegra/sources/kernel/kernel-4.4$ export CROSS_COMPILE=/opt/gcc-linaro-4.8.5-aarch64-linux-gnu/bin/aarch64-unknown-linux-gnu-

dennis@dennis:~/sda/home/dennis/JetPack-L4T-3.2/64_TX2/Linux_for_Tegra/sources/kernel/kernel-4.4$ make ARCH=arm64 O=$TEGRA_KERNEL_OUT

make[1]: Entering directory '/tmp'

Aborted (core dumped)

...

Aborted (core dumped)

aarch64-unknown-linux-gnu-gcc: loadlocale.c:129: _nl_intern_locale_data: Assertion `cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' failed.

Aborted (core dumped)

...

Aborted (core dumped)

/home/dennis/sda/home/dennis/JetPack-L4T-3.2/64_TX2/Linux_for_Tegra/sources/kernel/kernel-4.4/scripts/gcc-goto.sh: line 21: 19620 Done cat <

int main(void)

{

#if defined(__arm__) || defined(__aarch64__)

/*

* Not related to asm goto, but used by jump label

* and broken on some ARM GCC versions (see GCC Bug 48637).

*/

static struct { int dummy; int state; } tp;

asm (".long %c0" :: "i" (&tp.state));

#endif

entry:

asm goto ("" :::: entry);

return 0;

}

END

19621 Aborted (core dumped) | $@ -x c - -c -o /dev/null > /dev/null 2>&1

Aborted (core dumped)

Aborted (core dumped)

Aborted (core dumped)

CHK include/config/kernel.release

Using /home/dennis/sda/home/dennis/JetPack-L4T-3.2/64_TX2/Linux_for_Tegra/sources/kernel/kernel-4.4 as source for kernel

GEN ./Makefile

CHK include/generated/uapi/linux/version.h

CHK include/generated/utsrelease.h

make[2]: 'include/generated/mach-types.h' is up to date.

CC kernel/bounds.s

aarch64-unknown-linux-gnu-gcc: loadlocale.c:129: _nl_intern_locale_data: Assertion `cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' failed.

Aborted (core dumped)

/home/dennis/sda/home/dennis/JetPack-L4T-3.2/64_TX2/Linux_for_Tegra/sources/kernel/kernel-4.4/./Kbuild:44: recipe for target 'kernel/bounds.s' failed

make[2]: *** [kernel/bounds.s] Error 134

/home/dennis/sda/home/dennis/JetPack-L4T-3.2/64_TX2/Linux_for_Tegra/sources/kernel/kernel-4.4/Makefile:1016: recipe for target 'prepare0' failed

make[1]: *** [prepare0] Error 2

make[1]: Leaving directory '/tmp'

Makefile:150: recipe for target 'sub-make' failed

make: *** [sub-make] Error 2

### 如何安装 Ubuntu 18.04 操作系统 #### 制作启动介质 为了能够顺利安装Ubuntu 18.04, 需要先准备一个可启动的USB闪存驱动器或DVD-ROM。这可以通过下载官方ISO文件并利用工具如Rufus来创建启动U盘实现[^1]。 #### 查看电脑信息 在开始之前,建议记录当前计算机硬件配置详情以便于后续可能出现的问题排查以及确保兼容性良好。此过程涉及BIOS/UEFI设置确认支持Legacy BIOS模式或是Secure Boot状态调整等操作。 #### 创建未分配空间用于Linux分区 如果已经在运行Windows,则可以在磁盘管理工具内预留一部分硬盘作为将来给Ubuntu使用的独立区域——即建立一个新的简单卷而不指派任何字母标记它;或者直接通过第三方软件来进行更精细地规划与分割工作。 #### 开始安装流程 当一切就绪之后,按照正常途径开机时选择从刚才制备好的外部设备引导进入Live CD环境: - 对于台式机通常是在POST自检期间按下Del键、Esc键或者是特定厂商指定的功能快捷方式(比如Dell机器上的F12); - 笔记本产品可能有所不同,请参照具体型号手册说明获取确切方法指引。 一旦成功加载图形化界面后,依照屏幕提示逐步推进直至到达“Installation Type”的选项卡处停下思考下一步动作[^2]: 对于希望保留原有数据且新增加GNU/Linux发行版的情况来说,“Something else...”会是比较稳妥的选择因为它允许手动定义根目录(`/`)、交换区(swap area)以及其他必要的挂载点位置。 #### 设置时间和网络连接参数 继续前进直到碰到有关时间日期同步机制询问环节,此时应该依据实际情况挑选最接近所在地理位置的城市名以自动校准RTC(real-time clock)。 另外,在线资源库访问权限验证阶段务必保证有有效的互联网接入渠道可用,这样可以极大地方便后续包依赖关系解析及安全更新补丁下发等工作开展得更加顺畅无阻。 #### 用户账户创建和个人资料录入 最后几步便是围绕着新建管理员级账号展开讨论了,包括但不限于全名填写、登录密码设定等内容均在此刻敲定下来。 ```bash sudo adduser newusername ``` 以上就是整个基于已有Win平台之上部署Ubuntu双系统的简易指导概览。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值