背景:
近来学习了一下ARM64的neon编程,想找个硬件实际测试一下。发现我的群晖DS220j就是基于ARM64的,原本是用android-ndk-r25c\toolchains\llvm\prebuilt\windows-x86_64交叉编译的,结果发现编出来的a.out 无法运行,显示“-sh: ./a.out: No such file or directory” 。所以就想着直接在DS220j上装个gcc。
过程:
参考了这篇文章
首先当然是通过ssh登录DS220j了,此处略过。
后面步骤
1. 切换到root账号
sudo -i
2. 切换到临时目录,下载一个脚本 buildroot-armeabihf-bootstrap.sh,并添加可执行权限
cd /volume1/@tmp
wget http://ipkg.nslu2-linux.org/optware-ng/bootstrap/buildroot-armeabihf-bootstrap.sh .
chmod +x buildroot-armeabihf-bootstrap.sh
3. 执行脚本
./buildroot-armeabihf-bootstrap.sh
这步sh执行特别特别慢,因为下载速度实在太慢了。我没有弄代理,所以下载了一夜。大家做好心理准备。
执行结果
root@DS220j:/volume1/@tmp# ./buildroot-armeabihf-bootstrap.sh
--2023-03-18 19:06:25-- http://ipkg.nslu2-linux.org/optware-ng/buildroot-armeabihf/ipkg-static_0.2.4-3_arm.ipk
Resolving ipkg.nslu2-linux.org... 2620:139:a000::c1, 23.141.224.193
Connecting to ipkg.nslu2-linux.org|2620:139:a000::c1|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 376785 (368K) [text/plain]
Saving to: '/tmp/ipkg-static_0.2.4-3_arm.ipk'
/tmp/ipkg-static_0.2.4-3_arm. 86%[==========================================> ] 317.19K --.-KB/s in 19m 25s
2023-03-18 19:25:54 (279 B/s) - Read error at byte 324800/376785 (Connection timed out). Retrying.
--2023-03-18 19:25:55-- (try: 2) http://ipkg.nslu2-linux.org/optware-ng/buildroot-armeabihf/ipkg-static_0.2.4-3_arm.ipk
Connecting to ipkg.nslu2-linux.org|2620:139:a000::c1|:80... connected.
HTTP request sent, awaiting response... 206 Partial Content
Length: 376785 (368K), 51985 (51K) remaining [text/plain]
Saving to: '/tmp/ipkg-static_0.2.4-3_arm.ipk'
/tmp/ipkg-static_0.2.4-3_arm. 100%[+++++++++++++++++++++++++++++++++++++++++++======>] 367.95K 2.58KB/s in 20s
2023-03-18 19:26:15 (2.58 KB/s) - '/tmp/ipkg-static_0.2.4-3_arm.ipk' saved [376785/376785]
./data.tar.gz
./
./opt/
./opt/bin/
./opt/bin/ipkg-static
./opt/bin/ipkg
./opt/bin/update-alternatives
./opt/var/
./opt/var/lock/
./opt/share/
./opt/share/man/
./opt/share/man/man1/
./opt/share/man/man1/opkg-cl.1
./opt/share/opkg/
./opt/share/opkg/intercept/
./opt/share/opkg/intercept/update-modules
./opt/share/opkg/intercept/depmod
./opt/share/opkg/intercept/ldconfig
./opt/etc/
./opt/etc/ipkg/
./opt/etc/ipkg/ipkg.conf
./opt/etc/ipkg.conf
Bootstraping done
Installing glibc-locale package to generate needed /opt/lib/locale/locale-archive
=================================================================================
Downloading http://ipkg.nslu2-linux.org/optware-ng/buildroot-armeabihf/Packages.gz.
Inflating http://ipkg.nslu2-linux.org/optware-ng/buildroot-armeabihf/Packages.gz.
Updated list of available packages in /opt/lib/ipkg/lists/optware-ng.
Installing glibc-locale (2.25-5) on /opt/.
Downloading http://ipkg.nslu2-linux.org/optware-ng/buildroot-armeabihf/glibc-locale_2.25-5_arm.ipk.
Installing glibc-opt (2.25-1) on /opt/.
Downloading http://ipkg.nslu2-linux.org/optware-ng/buildroot-armeabihf/glibc-opt_2.25-1_arm.ipk.
Installing libnsl (2.25-1) on /opt/.
Downloading http://ipkg.nslu2-linux.org/optware-ng/buildroot-armeabihf/libnsl_2.25-1_arm.ipk.
Installing gconv-modules (2.25-4) on /opt/.
Downloading http://ipkg.nslu2-linux.org/optware-ng/buildroot-armeabihf/gconv-modules_2.25-4_arm.ipk.
Configuring libnsl.
Configuring glibc-opt.
Configuring gconv-modules.
Configuring glibc-locale.
Generating locale-archive with default locales ... Done
=================================================================================
Removing glibc-locale package to save space: this doesn't remove generated /opt/lib/locale/locale-archive
Removing package glibc-locale from /opt/...
root@DS220j:/volume1/@tmp#
4. 升级ipkg
/opt/bin/ipkg update
执行结果
root@DS220j:/volume1/@tmp# /opt/bin/ipkg update
Downloading http://ipkg.nslu2-linux.org/optware-ng/buildroot-armeabihf/Packages.gz.
Inflating http://ipkg.nslu2-linux.org/optware-ng/buildroot-armeabihf/Packages.gz.
Updated list of available packages in /opt/lib/ipkg/lists/optware-ng.
root@DS220j:/volume1/@tmp#
5. 安装gcc
/opt/bin/ipkg install gcc
这一步也很慢,download了很久。所以最好有个好网络
执行结果
root@DS220j:/volume1/@tmp# /opt/bin/ipkg install gcc
Installing gcc (7.2.0-7) on /opt/.
Downloading http://ipkg.nslu2-linux.org/optware-ng/buildroot-armeabihf/gcc_7.2.0-7_arm.ipk.
Installing libgmp (6.1.2-1) on /opt/.
Downloading http://ipkg.nslu2-linux.org/optware-ng/buildroot-armeabihf/libgmp_6.1.2-1_arm.ipk.
Installing libmpfr (3.1.3-1) on /opt/.
Downloading http://ipkg.nslu2-linux.org/optware-ng/buildroot-armeabihf/libmpfr_3.1.3-1_arm.ipk.
Installing libmpc (1.0.2-1) on /opt/.
Downloading http://ipkg.nslu2-linux.org/optware-ng/buildroot-armeabihf/libmpc_1.0.2-1_arm.ipk.
Installing zlib (1.2.11-2) on /opt/.
Downloading http://ipkg.nslu2-linux.org/optware-ng/buildroot-armeabihf/zlib_1.2.11-2_arm.ipk.
Configuring libgmp.
Configuring libmpfr.
Configuring libmpc.
Configuring zlib.
Configuring gcc.
root@DS220j:/volume1/@tmp# gcc
-ash: gcc: command not found
root@DS220j:/volume1/@tmp# /opt/bin/gcc
gcc: fatal error: no input files
compilation terminated.
root@DS220j:/volume1/@tmp# exit
logout