AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1652605
Accepted
SpaceCowboy
SpaceCowboy
Asked: 2021-05-31 18:03:53 +0800 CST2021-05-31 18:03:53 +0800 CST 2021-05-31 18:03:53 +0800 CST

除非在链接所在的目录中,否则无法执行指向 exe 的符号链接

  • 772

我使用这些 bash 脚本在 bin 目录中创建了指向 exe 文件的符号链接:

dan@Linux-Desktop:~/dev/arm/gcc-4.0.1-glibc-2.3.5/arm-unknown-linux-gnu/bin$ cat do_links.sh
./make_links.sh as
./make_links.sh nm
./make_links.sh ar
./make_links.sh ranlib
./make_links.sh strip
./make_links.sh objdump
./make_links.sh ld
./make_links.sh gcov
./make_links.sh gcc-4.0.1
./make_links.sh gcc
./make_links.sh gprof
./make_links.sh gccbug
./make_links.sh g++
./make_links.sh c++
./make_links.sh strings
./make_links.sh c++filt
./make_links.sh size
./make_links.sh cpp
./make_links.sh readelf
./make_links.sh addr2line
./make_links.sh objcopy
dan@Linux-Desktop:~/dev/arm/gcc-4.0.1-glibc-2.3.5/arm-unknown-linux-gnu/bin$ cat make_links.sh
ln -s arm-unknown-linux-gnu-$1 $1

然后我在 bin 目录中运行 ./do_links.sh ,这就是 bin 目录的样子:

dan@Linux-Desktop:~/dev/arm/gcc-4.0.1-glibc-2.3.5/arm-unknown-linux-gnu/bin$ lt
total 26552
-rwxr-xr-x 2 dan dan 2566199 May 30 16:44 arm-unknown-linux-gnu-as
-rwxr-xr-x 2 dan dan 1762396 May 30 16:44 arm-unknown-linux-gnu-nm
-rwxr-xr-x 2 dan dan 1706104 May 30 16:44 arm-unknown-linux-gnu-ar
-rwxr-xr-x 2 dan dan 1706099 May 30 16:44 arm-unknown-linux-gnu-ranlib
-rwxr-xr-x 2 dan dan 2203025 May 30 16:44 arm-unknown-linux-gnu-strip
-rwxr-xr-x 2 dan dan 2346625 May 30 16:44 arm-unknown-linux-gnu-objdump
-rwxr-xr-x 2 dan dan 2471491 May 30 16:44 arm-unknown-linux-gnu-ld
-rwxr-xr-x 1 dan dan   67493 May 30 16:44 arm-unknown-linux-gnu-gcov
-rwxr-xr-x 2 dan dan  201417 May 30 16:44 arm-unknown-linux-gnu-gcc-4.0.1
-rwxr-xr-x 2 dan dan  201417 May 30 16:44 arm-unknown-linux-gnu-gcc
-rwxr-xr-x 1 dan dan 2013095 May 30 16:44 arm-unknown-linux-gnu-gprof
-rwxr-xr-x 1 dan dan   16196 May 30 16:44 arm-unknown-linux-gnu-gccbug
-rwxr-xr-x 2 dan dan  206621 May 30 16:44 arm-unknown-linux-gnu-g++
-rwxr-xr-x 2 dan dan  206621 May 30 16:44 arm-unknown-linux-gnu-c++
-rwxr-xr-x 1 dan dan 1602788 May 30 16:44 arm-unknown-linux-gnu-strings
-rwxr-xr-x 1 dan dan 1692490 May 30 16:44 arm-unknown-linux-gnu-c++filt
-rwxrwxr-x 1 dan dan   12281 May 30 16:44 fix-embedded-paths
-rwxr-xr-x 1 dan dan 1620406 May 30 16:44 arm-unknown-linux-gnu-size
-rwxr-xr-x 1 dan dan  202864 May 30 16:44 arm-unknown-linux-gnu-cpp
-rwxr-xr-x 1 dan dan  398151 May 30 16:44 arm-unknown-linux-gnu-readelf
-rwxr-xr-x 1 dan dan 1727820 May 30 16:44 arm-unknown-linux-gnu-addr2line
-rwxr-xr-x 1 dan dan 2203026 May 30 16:44 arm-unknown-linux-gnu-objcopy
-rwxrwxr-x 1 dan dan     339 May 30 18:31 check_ver.sh
-rwxrwxr-x 1 dan dan     460 May 30 19:09 do_links.sh
-rwxr-xr-x 1 dan dan     129 May 30 19:13 make_links.sh
lrwxrwxrwx 1 dan dan      24 May 30 19:38 as -> arm-unknown-linux-gnu-as
lrwxrwxrwx 1 dan dan      24 May 30 19:38 nm -> arm-unknown-linux-gnu-nm
lrwxrwxrwx 1 dan dan      28 May 30 19:38 ranlib -> arm-unknown-linux-gnu-ranlib
lrwxrwxrwx 1 dan dan      24 May 30 19:38 ar -> arm-unknown-linux-gnu-ar
lrwxrwxrwx 1 dan dan      27 May 30 19:38 strip -> arm-unknown-linux-gnu-strip
lrwxrwxrwx 1 dan dan      29 May 30 19:38 objdump -> arm-unknown-linux-gnu-objdump
lrwxrwxrwx 1 dan dan      24 May 30 19:38 ld -> arm-unknown-linux-gnu-ld
lrwxrwxrwx 1 dan dan      26 May 30 19:38 gcov -> arm-unknown-linux-gnu-gcov
lrwxrwxrwx 1 dan dan      31 May 30 19:38 gcc-4.0.1 -> arm-unknown-linux-gnu-gcc-4.0.1
lrwxrwxrwx 1 dan dan      25 May 30 19:38 gcc -> arm-unknown-linux-gnu-gcc
lrwxrwxrwx 1 dan dan      27 May 30 19:38 gprof -> arm-unknown-linux-gnu-gprof
lrwxrwxrwx 1 dan dan      28 May 30 19:38 gccbug -> arm-unknown-linux-gnu-gccbug
lrwxrwxrwx 1 dan dan      25 May 30 19:38 g++ -> arm-unknown-linux-gnu-g++
lrwxrwxrwx 1 dan dan      25 May 30 19:38 c++ -> arm-unknown-linux-gnu-c++
lrwxrwxrwx 1 dan dan      29 May 30 19:38 strings -> arm-unknown-linux-gnu-strings
lrwxrwxrwx 1 dan dan      29 May 30 19:38 c++filt -> arm-unknown-linux-gnu-c++filt
lrwxrwxrwx 1 dan dan      26 May 30 19:38 size -> arm-unknown-linux-gnu-size
lrwxrwxrwx 1 dan dan      25 May 30 19:38 cpp -> arm-unknown-linux-gnu-cpp
lrwxrwxrwx 1 dan dan      29 May 30 19:38 readelf -> arm-unknown-linux-gnu-readelf
lrwxrwxrwx 1 dan dan      31 May 30 19:38 addr2line -> arm-unknown-linux-gnu-addr2line
lrwxrwxrwx 1 dan dan      29 May 30 19:38 objcopy -> arm-unknown-linux-gnu-objcopy

所以我可以在该目录中执行符号链接:

dan@Linux-Desktop:~/dev/arm/gcc-4.0.1-glibc-2.3.5/arm-unknown-linux-gnu/bin$ gcc --version
gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

但是当我尝试在其他任何地方执行符号链接时:

dan@Linux-Desktop:~/dev/arm/gcc-4.0.1-glibc-2.3.5/arm-unknown-linux-gnu/bin$ cd ..
dan@Linux-Desktop:~/dev/arm/gcc-4.0.1-glibc-2.3.5/arm-unknown-linux-gnu$ bin/gcc --version
bash: bin/gcc: No such file or directory

只是为了好玩,我在 bin 目录中创建了一个 bash 脚本:

dan@Linux-Desktop:~/dev/arm/gcc-4.0.1-glibc-2.3.5/arm-unknown-linux-gnu/bin$ echo "gcc --version" > check.sh
dan@Linux-Desktop:~/dev/arm/gcc-4.0.1-glibc-2.3.5/arm-unknown-linux-gnu/bin$ chmod +x check.sh
dan@Linux-Desktop:~/dev/arm/gcc-4.0.1-glibc-2.3.5/arm-unknown-linux-gnu/bin$ ./check.sh
gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

dan@Linux-Desktop:~/dev/arm/gcc-4.0.1-glibc-2.3.5/arm-unknown-linux-gnu/bin$ cd ..
dan@Linux-Desktop:~/dev/arm/gcc-4.0.1-glibc-2.3.5/arm-unknown-linux-gnu$ bin/check.sh
gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

它可以在任何其他目录中正常工作。

然后我认为它与其他gcc冲突并将链接名称更改为gcc2:

dan@Linux-Desktop:~$ which gcc
/usr/bin/gcc
dan@Linux-Desktop:~$ which gcc2
/home/dan/dev/arm/gcc-4.0.1-glibc-2.3.5/arm-unknown-linux-gnu/bin/gcc2
dan@Linux-Desktop:~$ gcc2 --version
bash: /home/dan/dev/arm/gcc-4.0.1-glibc-2.3.5/arm-unknown-linux-gnu/bin/gcc2: No such file or directory

我什至无法从任何其他目录运行显式 exe:

dan@Linux-Desktop:~$ cat testd.sh
ls -ltr /home/dan/dev/arm/gcc-4.0.1-glibc-2.3.5/arm-unknown-linux-gnu/bin/arm-unknown-linux-gnu-gcc
/home/dan/dev/arm/gcc-4.0.1-glibc-2.3.5/arm-unknown-linux-gnu/bin/arm-unknown-linux-gnu-gcc --version
dan@Linux-Desktop:~$ ./testd.sh
-rwxr-xr-x 2 dan dan 201417 May 30 16:44 /home/dan/dev/arm/gcc-4.0.1-glibc-2.3.5/arm-unknown-linux-gnu/bin/arm-unknown-linux-gnu-gcc
./testd.sh: line 2: /home/dan/dev/arm/gcc-4.0.1-glibc-2.3.5/arm-unknown-linux-gnu/bin/arm-unknown-linux-gnu-gcc: No such file or directory
dan@Linux-Desktop:~$

这是我的PATH:

dan@Linux-Desktop:~$ printenv PATH
/home/dan/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/dan/java/jdk-11.0.11+9/bin:/home/dan/dev/arm/gcc-4.0.1-glibc-2.3.5/arm-unknown-linux-gnu/bin
symbolic-link
  • 1 1 个回答
  • 39 Views

1 个回答

  • Voted
  1. Best Answer
    Kamil Maciorowski
    2021-06-01T05:01:22+08:002021-06-01T05:01:22+08:00

    假设:您尝试运行的可执行文件适用于不兼容的架构

    该程序针对不兼容的体系结构进行编译,导致程序无法执行。声明“不存在”而不是“无效的可执行文件”的错误消息只是一个非常具有误导性的消息。

    或者它错过了所需的库。

    尤其是:

    1. 在目录中时,从您的其他位置gcc --version运行,而不是目录中存在的文件(符号链接)。大概是吧。标题是“除非在链接所在的目录中,否则无法执行指向 exe 的符号链接”,但“除非”部分是一种误解。在您没有运行符号链接的目录中。会运行它。gcc PATH/usr/bin/gcc./gcc --version
    2. 当在父目录中时,bin/gcc --version尝试运行符号链接,它指向arm-unknown-linux-gnu-gcc哪个触发每个假设的误导性错误。
    3. shell 脚本check.sh以任何一种方式工作,因为通过您的第一个找到它的地方PATH是目录,并且问题不适用于运行脚本本身。注意gcc脚本内部的位置PATH类似于(1),它的工作方式类似于(1)。
    4. 名为的链接永远不会起作用gcc2,因为. 唯一的是目录中的符号链接,它指向有问题的可执行文件。gcc2PATHgcc2
    5. 该脚本通过其完整路径testd.sh显式调用并出现问题。arm-unknown-linux-gnu-gcc
    • 0

相关问题

  • Windows 复制/移动在到达 SYMBOLIC LINK(符号链接)文件/文件夹时冻结

  • Windows 10:跨分区移动包含目录符号链接的文件夹

  • 用于符号链接的 Ansible 模块

  • WinSCP 中的符号链接文件传输速率

  • Windows 上的 tar 无法从存档中提取符号链接

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve