我想运行 ASICITIChttp://rfic.eecs.berkeley.edu/~niknejad/download.html 但据我所知,它是在旧的架构和 g77 编译器上开发的,当我在 Ubuntu 上使用此应用程序时,我必须添加外部架构 i386。
由于我遇到的一些问题,我删除了外部架构并卸载了软件(ASIC)。我原本计划在 Cygwin(Windows 10)中安装它(因为 2004 年就有人推荐过(网站上提到))。我下载了文件(Intel Linux Pentium 4(2004 年 1 月 6 日更新)和通用文件(所有平台)。)然后将其解压到一个文件夹中,并在 Cygwin 中将其移到那里,解压后使“asitic_linux”可执行(使用 chmod +x asitic_linux),然后它执行时出现错误
./asitic_linux: cannot execute binary file: Exec format error
我尝试使用“file asitic_linux”命令检查文件先决条件,输出如下
asitic_linux: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.2.5, stripped, too many notes (256)
我知道主要有两个问题,一个是我必须安装架构,另一个是所需的库。
知道如何安装外部架构以在 Cygwin 中运行给定的应用程序吗?
我还发现了一条新信息,即 Cygwin 不支持 ELF 可执行二进制文件。这就是为什么在运行 ldd asitic_linux 时会出现以下错误。
ldd: asitic_linux: Exec format error
我将尝试在 WLS(适用于 Linux 的 Windows 子系统)中运行该软件并了解更多信息。
答案1
如果您阅读文档,您会注意到原作者仅提供 19 年前的二进制版本。
由于他不提供源代码,因此您无法将其安装在当前系统中:无论是 Cygwin 还是 Linux。
所有系统都在发展,共享库也在改变,但由于该程序从未作为源版本共享,因此无法移植。
答案2
准备/先决条件-您需要的是:
#c(gcc) 和 c++(g++) 的编译器(我们的二进制文件依赖于这些编译器的许多库)使用命令
sudo apt build-essential
(不要输入错误的拼写,例如:essentials 或 essensial,只需使用 Tab 键即可自动完成名称)
#i386 架构
dpkg --add-architecture i386
#交叉编译功能 - 安装 gcc-multilib
sudo apt install gcc-multilib
)(最重要的)
然后,
sudo apt update&&sudo apt upgrade
然后,我下载了 asitic_linux ( wget http://rfic.eecs.berkeley.edu/~niknejad/Asitic/grackle/asitic_linux.gz
) 并解压它 ( gzip -d asitic_linux.gz
) 它给了我二进制 asitic_linux,我使用以下命令将其转换为可执行文件
chmod +x asitic_linux
然后我使用以下命令找到依赖项的名称(它所依赖的库列表)
ldd asitic_linux
从下面提供的链接下载软件包[choose:i386]
https://packages.debian.org/bullseye/libxext6[libXext.so.6]
https://packages.debian.org/bullseye/libx11-6[libX11.so.6]
https://packages.debian.org/bullseye/libxcb1[libxcb.so.1]
https://packages.debian.org/bullseye/libxau6[libXau.so.6]
https://packages.debian.org/bullseye/libxdmcp6[libXdmcp.so.6]
https://packages.debian.org/bullseye/libbsd0[libbsd.so.0]
https://packages.debian.org/bullseye/libmd0[libmd.so.0]
http://old-releases.ubuntu.com/ubuntu/pool/universe/g/gcc-3.4/libg2c0_3.4.6-6ubuntu5_i386.deb[libg2c]
然后,提取
您也可以使用文件管理器本身来提取它
例如,下载 libxext.so.6(libxext6_1.3.4-1build1_i386)后,我提取 libxext6_1.3.4-1build1_i386.deb 文件,然后提取其中的 data.tar.zst 文件,这给了我两个文件“libXext.so.6 和 libXext.so.6.4.0”
或者,您可以从我的驱动器中下载上述所有二进制文件 https://mega.nz/folder/di4C1K4I#XC74pOD51CsOOKaTGdO5rg
在同一文件夹中打开终端:鼠标右键单击>>“在终端中打开”,然后使用pwd
知道路径的确切位置Ctrl+C
将其复制,以便稍后在 shell 中粘贴Ctrl+Shift+V
现在使用以下命令设置环境变量
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:exact/path/to/folder' >> ~/.bashrc
现在您可以运行./asitic_linux
(或 sudo ./asitic_linux)