unable to execute 'x86_64-linux-gnu-gcc': No such file or directory

博客围绕 Linux 系统中的 Ubuntu 展开,涉及服务器运维方面的内容,虽未给出具体内容,但可知与信息技术领域的操作系统及运维相关。
sudo apt-get install gcc
(venv) gapinyc@DESKTOP-9QS7RL5:~/superset$ sudo apt-get update sudo apt-get install -y \ build-essential \ python3-dev \ freetds-dev \ libssl-dev \ libffi-dev \ pkg-config \ unixodbc-dev Hit:1 http://security.ubuntu.com/ubuntu jammy-security InRelease Hit:2 https://packages.microsoft.com/ubuntu/22.04/prod jammy InRelease Hit:3 https://deb.nodesource.com/node_18.x nodistro InRelease Hit:4 http://archive.ubuntu.com/ubuntu jammy InRelease Hit:5 http://archive.ubuntu.com/ubuntu jammy-updates InRelease Hit:6 http://archive.ubuntu.com/ubuntu jammy-backports InRelease Reading package lists... Done Reading package lists... Done Building dependency tree... Done Reading state information... Done build-essential is already the newest version (12.9ubuntu3). freetds-dev is already the newest version (1.3.6-1). libffi-dev is already the newest version (3.4.2-4). pkg-config is already the newest version (0.29.2-1ubuntu3). libssl-dev is already the newest version (3.0.2-0ubuntu1.20). python3-dev is already the newest version (3.10.6-1~22.04.1). The following NEW packages will be installed: unixodbc-dev 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 248 kB of archives. After this operation, 1817 kB of additional disk space will be used. Get:1 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 unixodbc-dev amd64 2.3.9-5ubuntu0.1 [248 kB] Fetched 248 kB in 1s (174 kB/s) Selecting previously unselected package unixodbc-dev:amd64. (Reading database ... 55307 files and directories currently installed.) Preparing to unpack .../unixodbc-dev_2.3.9-5ubuntu0.1_amd64.deb ... Unpacking unixodbc-dev:amd64 (2.3.9-5ubuntu0.1) ... Setting up unixodbc-dev:amd64 (2.3.9-5ubuntu0.1) ... (venv) gapinyc@DESKTOP-9QS7RL5:~/superset$ pip install --no-binary :all: pymssql Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple/ Collecting pymssql Downloading https://pypi.tuna.tsinghua.edu.cn/packages/20/1c/1980c9e14e6ab6db4c775d92bf517b70bcafcfbc56eb5b58e2ee81744d4c/pymssql-2.3.8.tar.gz (185 kB) Installing build dependencies ... done Getting requirements to build wheel ... done Preparing metadata (pyproject.toml) ... done Building wheels for collected packages: pymssql Building wheel for pymssql (pyproject.toml) ... error error: subprocess-exited-with-error × Building wheel for pymssql (pyproject.toml) did not run successfully. │ exit code: 1 ╰─> [45 lines of output] /tmp/pip-build-env-8uiu4bcy/overlay/lib/python3.10/site-packages/setuptools_scm/_integration/version_inference.py:51: UserWarning: version of None already set warnings.warn(self.message) setup.py: BITNESS='64' setup.py: prefix='/usr/local' setup.py: platform.system() => Linux setup.py: platform.architecture() => ('64bit', 'ELF') setup.py: platform.libc_ver() => ('glibc', '2.35') setup.py: include_dirs => ['/usr/local/include'] setup.py: library_dirs => ['/usr/local/lib'] running bdist_wheel running build running build_py creating build/lib.linux-x86_64-cpython-310/pymssql copying src/pymssql/__init__.py -> build/lib.linux-x86_64-cpython-310/pymssql copying src/pymssql/exceptions.py -> build/lib.linux-x86_64-cpython-310/pymssql running egg_info writing src/pymssql.egg-info/PKG-INFO writing dependency_links to src/pymssql.egg-info/dependency_links.txt writing top-level names to src/pymssql.egg-info/top_level.txt listing git files failed - pretending there aren't any reading manifest file 'src/pymssql.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' adding license file 'LICENSE' writing manifest file 'src/pymssql.egg-info/SOURCES.txt' copying src/pymssql/__init__.pyi -> build/lib.linux-x86_64-cpython-310/pymssql copying src/pymssql/_mssql.pxd -> build/lib.linux-x86_64-cpython-310/pymssql copying src/pymssql/_mssql.pyi -> build/lib.linux-x86_64-cpython-310/pymssql copying src/pymssql/_mssql.pyx -> build/lib.linux-x86_64-cpython-310/pymssql copying src/pymssql/_pymssql.pyi -> build/lib.linux-x86_64-cpython-310/pymssql copying src/pymssql/_pymssql.pyx -> build/lib.linux-x86_64-cpython-310/pymssql copying src/pymssql/exceptions.pyi -> build/lib.linux-x86_64-cpython-310/pymssql copying src/pymssql/py.typed -> build/lib.linux-x86_64-cpython-310/pymssql copying src/pymssql/sqlfront.pxd -> build/lib.linux-x86_64-cpython-310/pymssql copying src/pymssql/version.h -> build/lib.linux-x86_64-cpython-310/pymssql running build_ext Compiling src/pymssql/_mssql.pyx because it changed. [1/1] Cythonizing src/pymssql/_mssql.pyx building 'pymssql._mssql' extension creating build/temp.linux-x86_64-cpython-310/src/pymssql x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -fPIC -I/usr/local/include -I/home/gapinyc/superset/venv/include -I/usr/include/python3.10 -c src/pymssql/_mssql.c -o build/temp.linux-x86_64-cpython-310/src/pymssql/_mssql.o -DMSDBLIB -std=c99 x86_64-linux-gnu-gcc -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -g -fwrapv -O2 build/temp.linux-x86_64-cpython-310/src/pymssql/_mssql.o -L/usr/local/lib -L/usr/lib/x86_64-linux-gnu -lsybdb -lgssapi_krb5 -lkrb5 -lssl -lcrypto -o build/lib.linux-x86_64-cpython-310/pymssql/_mssql.cpython-310-x86_64-linux-gnu.so /usr/bin/ld: cannot find -lgssapi_krb5: No such file or directory /usr/bin/ld: cannot find -lkrb5: No such file or directory collect2: error: ld returned 1 exit status error: command '/usr/bin/x86_64-linux-gnu-gcc' failed with exit code 1 [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed building wheel for pymssql Failed to build pymssql error: failed-wheel-build-for-install × Failed to build installable wheels for some pyproject.toml based projects ╰─> pymssql (venv) gapinyc@DESKTOP-9QS7RL5:~/superset$ sudo apt-get install -y \ libgssapi-krb5-2 \ libgssapi-krb5-dev \ krb5-config \ krb5-user \ libkrb5-dev \ libssl-dev \ libffi-dev \ pkg-config Reading package lists... Done Building dependency tree... Done Reading state information... Done E: Unable to locate package libgssapi-krb5-dev (venv) gapinyc@DESKTOP-9QS7RL5:~/superset$
最新发布
11-06
代码概述 用户使用 `ld` 手动链接生成了可执行文件 `main`,但该程序无法运行。需要分析链接命令是否正确,并排查导致程序无法运行的原因。 --- 代码解析 你使用的链接命令如下: ```bash ld /usr/lib/x86_64-linux-gnu/crt1.o /usr/lib/x86_64-linux-gnu/crti.o mian.o -o main /usr/lib/gcc/x86_64-linux-gnu/5/libgcc.a -lc /usr/lib/gcc/x86_64-linux-gnu/5/libgcc_eh.a /usr/lib/x86_64-linux-gnu/crtn.o ``` ### 存在的问题分析: 1. **拼写错误**:`mian.o` 应为 `main.o`,如果目标文件名拼写错误,链接器将无法找到正确的程序入口点。 2. **链接顺序问题**: `ld` 对链接顺序敏感,通常库文件应放在目标文件之后,但有些系统要求库文件在依赖它的目标文件之后出现。你虽然放了 `-lc` 和 `libgcc_eh.a`,但顺序可能不正确。 3. **缺少动态链接支持**: 如果你链接的是动态库(如 `-lc`),还需要确保链接器生成的是动态可执行文件,并包含动态链接器信息。可以添加以下参数: ```bash -dynamic-linker /lib64/ld-linux-x86-64.so.2 ``` 4. **入口点缺失或错误**: 程序必须有 `_start` 入口点(由 `crt1.o` 提供),如果你的目标文件未正确链接或入口点未被识别,程序无法运行。 5. **ELF 头部信息缺失或错误**: 手动调用 `ld` 可能会导致生成的 ELF 文件不完整,无法被系统识别为合法的可执行文件。 --- ### 推荐解决方法: #### ✅ 方法一:使用 `gcc` 自动链接(推荐) ```bash gcc main.o -o main ``` 此命令将自动完成所有正确的链接步骤,并确保可执行文件可以运行。 #### ✅ 方法二:修复 `ld` 命令(如果坚持手动链接) ```bash ld -m elf_x86_64 \ /usr/lib/x86_64-linux-gnu/crt1.o \ /usr/lib/x86_64-linux-gnu/crti.o \ main.o \ -L/usr/lib/gcc/x86_64-linux-gnu/5 \ -lgcc \ -lc \ -lgcc_eh \ /usr/lib/x86_64-linux-gnu/crtn.o \ -dynamic-linker /lib64/ld-linux-x86-64.so.2 \ -o main ``` --- ### 验证可执行文件是否有效 你可以使用以下命令检查生成的 `main` 是否是合法的可执行文件: ```bash file main ``` 输出应类似: ``` main: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, not stripped ``` 如果提示 `main: cannot execute binary file` 或 `Exec format error`,则说明文件结构不完整。 --- 知识点 - **链接顺序**:链接器对库和目标文件顺序敏感,顺序错误可能导致程序无法运行。 - **动态链接器信息**:若使用动态库,必须包含动态链接器路径,否则程序无法加载。 - **ELF 文件结构**:手动链接时需确保生成的文件结构完整,否则系统无法识别为合法可执行文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值