LDD

本文详细介绍了Oracle数据库和MySQL数据库的配置环境及依赖库情况,包括路径设置、环境变量配置等,并展示了通过ldd命令检查Oracle和MySQL相关库文件的具体依赖情况。此外,还提供了MySQL字符集与校对集的相关配置信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[root@fddc ~]# ldd /u01/app/product/11.2.0/dbhome_1/lib/libsqora.so.11.1
        linux-vdso.so.1 =>  (0x00007ffffa3ff000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007feea843a000)
        libm.so.6 => /lib64/libm.so.6 (0x00007feea81b5000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007feea7f98000)
        libnsl.so.1 => /lib64/libnsl.so.1 (0x00007feea7d7f000)
        libclntsh.so.11.1 => /u01/app/product/11.2.0/dbhome_1/lib/libclntsh.so.11.1 (0x00007feea53f2000)
        libodbcinst.so.1 => /usr/lib64/libodbcinst.so.1 (0x00007feea51e1000)
        libc.so.6 => /lib64/libc.so.6 (0x00007feea4e4e000)
        /lib64/ld-linux-x86-64.so.2 (0x0000003d9bc00000)
        libnnz11.so => /u01/app/product/11.2.0/dbhome_1/lib/libnnz11.so (0x00007feea4a81000)
        libaio.so.1 => /lib64/libaio.so.1 (0x00007feea4880000)
        libltdl.so.7 => /usr/lib64/libltdl.so.7 (0x00007feea4677000)
[root@fddc ~]# 
[root@fddc ~]# 
[root@fddc ~]# ldd /usr/local/mysql/lib/plugin/ha_connect.so
        linux-vdso.so.1 =>  (0x00007fff59be4000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fd89d68e000)
        libz.so.1 => /lib64/libz.so.1 (0x00007fd89d477000)
        libxml2.so.2 => /usr/lib64/libxml2.so.2 (0x00007fd89d125000)
        libodbc.so.2 => /usr/local/unixODBC/lib/libodbc.so.2 (0x00007fd89ceb9000)
        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007fd89cbb2000)
        libm.so.6 => /lib64/libm.so.6 (0x00007fd89c92e000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fd89c718000)
        libc.so.6 => /lib64/libc.so.6 (0x00007fd89c384000)
        /lib64/ld-linux-x86-64.so.2 (0x0000003d9bc00000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007fd89c180000)

[root@fddc ~]# 


export PATH
export PATH=/usr/local/unixODBC/bin:/usr/local/mysql/bin:$PATH
export ORACLE_HOME=/u01/app/product/11.2.0/dbhome_1
export ODBCHOME=/usr/local/unixODBC
export LD_LIBRARY_PATH=/usr/local/unixODBC/lib:$ORACLE_HOME/lib
##export NLS_LANG="SIMPLIFIED CHINESE_CHINA".ZHS16GBK
#export NLS_LANG="Simplified Chinese_china".ZHS16GBK 
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export LANG=en_US


FREETDS_HOME=/usr/local/freetds
export PATH=$FREETDS_HOME/bin:$PATH


alias mysqllog='tail -100f /data/mysql/data/fddc.err'
[root@fddc ~]# 
[root@fddc ~]# 
[root@fddc ~]# which isql
/usr/local/unixODBC/bin/isql
[root@fddc ~]# 
[root@fddc ~]# rpm -qa |grep unixODBC
unixODBC-devel-2.2.14-12.el6_3.x86_64
unixODBC-2.2.14-12.el6_3.x86_64
[root@fddc ~]# 


MariaDB [(none)]> show variables like '%char%';
+--------------------------+----------------------------------+
| Variable_name            | Value                            |
+--------------------------+----------------------------------+
| character_set_client     | utf8                             |
| character_set_connection | utf8                             |
| character_set_database   | utf8                             |
| character_set_filesystem | binary                           |
| character_set_results    | utf8                             |
| character_set_server     | utf8                             |
| character_set_system     | utf8                             |
| character_sets_dir       | /usr/local/mysql/share/charsets/ |
+--------------------------+----------------------------------+
8 rows in set (0.00 sec)


MariaDB [(none)]> 

MariaDB [(none)]> show variables like 'collation_%';
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    32675
Current database: *** NONE ***


+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database   | utf8_general_ci |
| collation_server     | utf8_general_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)


MariaDB [(none)]> select * from information_schema.schemata;
+--------------+--------------------+----------------------------+------------------------+----------+
| CATALOG_NAME | SCHEMA_NAME        | DEFAULT_CHARACTER_SET_NAME | DEFAULT_COLLATION_NAME | SQL_PATH |
+--------------+--------------------+----------------------------+------------------------+----------+
| def          | checkdb            | gbk                        | gbk_chinese_ci         | NULL     |
| def          | information_schema | utf8                       | utf8_general_ci        | NULL     |
| def          | mysql              | utf8                       | utf8_general_ci        | NULL     |
| def          | performance_schema | utf8                       | utf8_general_ci        | NULL     |
| def          | test               | utf8                       | utf8_general_ci        | NULL     |
+--------------+--------------------+----------------------------+------------------------+----------+
5 rows in set (0.01 sec)

<think>嗯,用户想了解Linux中的ldd命令的用法以及如何解决相关的问题。首先,我得回忆一下ldd的基本功能。ldd主要用于查看可执行文件或共享库所依赖的动态链接库,这在排查程序无法运行的问题时非常有用。比如,当程序提示缺少某个库文件时,使用ldd就能快速找到缺失的依赖。 接下来,我应该整理一下ldd的常见用法。比如基本命令格式是`ldd [选项] 可执行文件`,常用的选项可能有`-v`显示详细信息,`-u`显示未使用的直接依赖,`-r`重定位并报告缺失对象,这些都需要详细说明。同时,用户可能需要知道如何具体操作,例如查看某个程序的依赖,比如`ldd /bin/ls`,然后解释输出结果中各部分的含义,比如libc.so.6对应的是C标准库,后面的路径和地址信息说明加载的位置。 然后,用户可能会遇到的一些问题需要解决。比如,如果ldd报错找不到库,我应该分析可能的原因,比如库文件确实不存在、路径不在LD_LIBRARY_PATH中,或者库文件架构不匹配。解决方法可能包括安装对应的库,设置环境变量,或者检查库文件的架构是否正确。 另外,安全问题也很重要。因为ldd命令在某些情况下可能执行程序中的代码,存在潜在风险,所以需要提醒用户不要对不可信的可执行文件使用ldd,而应该用更安全的方式如`readelf -d`或`objdump -p`来查看依赖。 还有常见的错误情况,比如“not a dynamic executable”可能意味着文件不是动态链接的可执行文件,或者是脚本文件,这时候需要确认文件类型。另外,如果出现版本不兼容的问题,可能需要更新库或程序,或者使用符号链接调整版本号。 用户可能还会问如何生成依赖树,这时候可以介绍结合使用ldd和脚本工具,或者使用其他命令如`strace`来跟踪库加载过程。此外,补充知识部分可以提到动态链接器相关的环境变量,帮助用户进一步调试。 最后,要确保回答结构清晰,分点列出用法、示例、问题排查、注意事项和相关问题,这样用户能够逐步理解和解决问题。同时,根据用户提供的引用内容,可能需要注意引用相关的资料,但当前问题中用户提供的引用似乎和ldd关联不大,所以可能需要忽略或适当调整引用部分。</think># Linux ldd命令用法及问题排查指南 ## 一、ldd命令基础用法 ldd(List Dynamic Dependencies)用于显示二进制可执行文件或共享库的动态链接库依赖关系,基本格式为: ```bash $ ldd [选项] 可执行文件 ``` 常用选项: - `-v`:显示详细版本信息 - `-u`:显示未使用的直接依赖(GLIBC扩展) - `-r`:执行重定位并报告缺失对象(ELFs) ## 二、典型使用示例 查看/bin/ls的依赖: ```bash $ ldd /bin/ls ``` 输出解析: ``` linux-vdso.so.1 (0x00007ffd3a1f0000) libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f8e5a3e0000) libcap.so.2 => /lib64/libcap.so.2 (0x00007f8e5a1d0000) libc.so.6 => /lib64/libc.so.6 (0x00007f8e59e00000) # C标准库 /lib64/ld-linux-x86-64.so.2 (0x00007f8e5a620000) ``` ## 三、常见问题排查 ### 1. 缺失依赖库 **现象**: ```bash $ ldd myapp libmylib.so => not found ``` **解决方案**: - 确认库文件是否存在: ```bash $ find / -name libmylib.so 2>/dev/null ``` - 添加库路径到环境变量: ```bash $ export LD_LIBRARY_PATH=/custom/lib:$LD_LIBRARY_PATH ``` - 安装缺失的软件包(如通过yum/dnf) ### 2. 架构不匹配 **现象**: ```bash /lib/ld64.so.1: No such file or directory ``` **检查方法**: ```bash $ file /path/to/libxxx.so $ uname -m # 确认系统架构 ``` ### 3. 安全警告 **风险提示**:ldd可能触发可执行文件中的代码执行,对不可信文件应使用更安全的方式: ```bash $ objdump -p /path/to/binary | grep NEEDED $ readelf -d /path/to/binary | grep 'Shared library' ``` ## 四、进阶技巧 ### 1. 生成依赖树 ```bash $ ldd /usr/bin/xxx | awk '{print $3}' | xargs -I{} ldd {} 2>/dev/null ``` ### 2. 调试加载过程 ```bash $ LD_DEBUG=libs /path/to/program ``` ## 五、注意事项 1. 对于静态编译的可执行文件,ldd不会显示任何依赖 2. 使用`-r`选项时,可能触发重定位错误(需root权限) 3. 建议优先使用`patchelf`工具修改RPATH而非直接修改LD_LIBRARY_PATH #
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值