⑴ GCC问题,怎么我没有找到UDF.h这个库文件
如1、头文件<\路径\udf.h>
2、编译中加“I”就可以编译了。
⑵ 为什么GCC、GLIBC、libstdc++ not found
GLIBCXX not found
相关报错处理方式:
1. 需要确认所使用的库文件是否存在于系统中,通常通过运行 `ldd` 命令查看程序依赖的动态库。如果出现类似`/usr/lib64/libstdc++.so.6: version 'GLIBCXX_3.4.21' not found (required by ./xxx)`的错误信息,说明缺少特定版本的GLIBCXX库。
处理方法如下:
2. **源码编译更新gcc**
3. **下载官方包复制**
4. **手动编译复制**
GLIBC not found
相关错误信息示例:
若报错信息为`/lib64/libc.so.6: version 'GLIBC_2.18' not found (required by /lib64/libstdc++.so.6)`,则表明缺少特定版本的GLIBC库。
处理方法有以下几种:
2. **源码编译更新gcc**
3. **下载官方包复制**
4. **手动编译复制**
gcc
gcc 是 GNU Compiler Collection 的简称,用于将c/c++源代码编译为不同操作系统平台的汇编代码和可执行程序。
gcc 是一组编译工具的集合,主要负责预处理和编译任务,自动调用汇编器和链接器,提供与编译器紧密相关的运行库支持。
glibc
glibc 是 GNU 实现的标准 C 库,提供操作系统级的底层函数和核心API,如I/O设备操作。
glibc 包含多个头文件,每个文件定义一组相关设施。
libstdc++
libstdc++ 类似于 glibc,但针对 C++ 标准库。
提供与标准 C 库相同的核心定义和底层功能,以及 C++ 标准库的实现,用于实现 C++ 程序中的库内容,如线程、流、文件、输入/输出等。
大多数 linux 发行版默认使用 libstdc++。
ABI
标准库的一个关键方面是 Application Binary Interface (ABI),它确保了编写的 C 程序能在不同版本的 glibc 上运行。
为了改进而不破坏兼容性,glibc 使用符号版本控制,每个函数与特定版本关联,允许新版本的程序使用新符号,而旧版本的程序仍能使用旧但兼容的符号。
binutils 是将汇编语言翻译为目标代码的程序,与标准库之间存在密切关系。
GNU C 函数库为开发者提供了便利,便于使用 C 语言开发基于 Linux 操作系统的程序。
glibc 是 Linux 下的 C 标准库实现,是 GNU C Library 的一部分,已成为 Linux 的主要 C 库之一。
相关命令
使用 `ldd` 命令查看程序依赖的动态库。
通过 `strings /lib64/libc.so.6 | grep GLIBC_` 查看系统 GLIBC 支持的版本。
通过 `strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX` 查看系统 GLIBCXX 支持的版本。
使用 `readelf` 命令可以检查应用程序或库所需的 GLIBC 或 GLIBCXX 版本。
⑶ gcc交叉编译怎么找头文件及lib库的
是在specs里面读取的路径信息。
命令行中键入 gcc -v
Reading specs from /usr/lib/gcc/i686-pc-cygwin/3.4.4/specs
Configured with: /usr/build/package/orig/test.respin/gcc-3.4.4-3/configure --ver
bose --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --libdir=/usr/lib --libe
xecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --enable-langu
ages=c,ada,c++,d,f77,pascal,java,objc --enable-nls --without-included-gettext --
enable-version-specific-runtime-libs --without-x --enable-libgcj --disable-java-
awt --with-system-zlib --enable-interpreter --disable-libgcj-debug --enable-thre
ads=posix --enable-java-gc=boehm --disable-win32-registry --enable-sjlj-exceptio
ns --enable-hash-synchronization --enable-libstdcxx-debug
Thread model: posix
gcc version 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)
注意“--prefix=/usr” 以及“--libdir=/usr/lib ”
表示gcc ld as 等可执行文件安装在/usr/bin,而libc.a 等文件是在/usr/lib中。
解压缩交叉编译器时,也是要解压缩在在--prefix 指定的目录下。
比如 下载了arm-linux 的交叉编译器cross-3.3.2.tar.bz2,解压缩之后,运行 arm-linux-gcc -v
得到 --prefix=/usr/local/arm。那么就要把 bin lib 等所有的文件和文件夹到/usr/local/arm目录下。
否则到时候运行arm-linux-gcc hello.c会提示找不到stdio.h 或者 lib.so.6 等
HOWTO Use the GCC specs file
About Specs file
The "gcc" program invoked by users is a convenient front-end driver executable which will invoke other programs in the background such as cc1, as or ld to do its work according to the command line parameter given. A specs file is plain text used to control the default behavior for the "gcc" front-end. The specs file is usually built-in but for flexibility purposes, it can be overridden with an external version.
Basic Specs file modifications
CC will proce a specs file via the following command.
gcc -mpspecs > specs
You may use a text editor of your choice to inspect it. It may be confusing at first, but there are many places of interest. To use the specs file, invoke gcc with -specs= or place it at "/mingw/lib/gcc/mingw32//specs" to make GCC use it by default, where refers to the GCC version installed.
Adding include directories to the search path
& #160;he *cpp: section should be modified. It contains the following by default:
*cpp:
%{posix:-D_POSIX_SOURCE} %{mthreads:-D_MT}
If "z:\libx\include" needs to be added to the GCC includes search path, it should be changed to the following
*cpp:
%{posix:-D_POSIX_SOURCE} %{mthreads:-D_MT} -I/z/libx/include
Adding lib directories to the search path
& #160;he *link_libgcc: section should be modified. It contains the following by default:
*link_libgcc:
%D
& #160;f "z:\libx\lib" needs to be added to the GCC library search path, it should be changed to the following
*link_libgcc:
%D -L/z/libx/lib
⑷ Linux下编译.c文件时sqlite3找不到库文件如何解决(undefined reference to `sqlite3_open')
建议最好写个makefile,包含上库段告陵文件
动态的路径一般是/usr/lib/握戚
静态库一般可能是安友氏装目录
可以试试rmp -q
或者find / -name
sqlite3