问题描述
/usr/bin/ld: cannot find -lxxx
其中xxx即表示函式库文件名称,其命名规则是:lib+库名(即xxx)+.so。
可能原因: 
1 安装了,但相对应的lib版本不兼容
——我们需要的是libjpeg.so.8.0但安装的是libjpeg.so.6.0,
——或者是需要arm平台上的lib,但我们安装的是X86架构的,或反之本来是要编译arm平台上的却忘了指定交叉编译器
——我们需要32位但我们安装的是64位的
2 安装了,版本也对了,但lib(.so.version-num)的symbolic link 不正确,没有连结到正确的函式库文件(.so)
——我们需要的是libjpeg.so.8.0,也安装上了,但是实际使用时我们是查找的libjpeg.so,就需要相应的一个名为libjpeg.so的link 指向libjpeg.so.8.0
3 目录中确实没有相对应的lib
——系统中没有安装相对应的lib
——安装了,但不在这个目录且不在环境变量中
遇到此类问题的解决思路:
一、先详细了解问题,注意看错误的详细信息以进一步确定,若出现类似下面提示: 
/usr/bin/ld: skipping incompatible /usr/local/jpeg-6b when searching for -libjpeg.so
问题:版本不兼容
1、32位 与 64位 冲突问题
案例:
解决 yum provides libX11.so
libX11-devel-1.3-2.el6.x86_64 : Development files for libX11
Repo : base
Matched from:
Filename : /usr/lib64/libX11.so
解决:
yum install libX11-devel-1.3-2.el6.x86_64
安装 x86_64 兼容包

2、平台不兼容ARM X86

案例:
很可能是编译是忘了指定交叉编译工具
make CC=arm-xilinx-linux-gnueabi-gcc
或者手动修改Makefile中的CC
3、版本号不对
安装新的版本(一般会有具体的提示,要求是什么版本)
二、若非版本问题
进入相关目录查看是否是lib(.so.version-num)的symbolic link 不正确,并建立链接
案例:
cd /usr/lib
ln -s libjpeg.so.6 libjpeg.so 
三、真的没有要找的libxxx.so
1、安装了但不在系统变量所设的目录
修改Makefile 在编译选项中添加Lyourlibpath
案例:
修改plugins/input_uvc/Makfile
修改
CFLAGS = -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC

CFLAGS = -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC-I/home/wu/jpeg-6b/jpeg/include 

修改
$(CC) $(CFLAGS) -ljpeg -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo

$(CC) $(CFLAGS) -ljpeg -L/home/wu/jpeg-6b/jpeg/lib -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo

2、没安装
安装相关库 
先用yum 或apt-get search以确定库的确切名称
然后安装 
案例: 
sudo yum search libxtst-dev
sudo yum install libxtst-devel   
此问题所感
俗话说:对症下药,连别人是什么病都不知道,就开始给人开药方岂不可笑?
解决问题前先花时间研究问题。每个问题都有很多中可能的原因,以上这个简单的例子就可以说明问题,善于从一些错误提示和相关内容的字里行间去深入问题,对问题了解的越清楚,就越有利于定位问题,定位的越准就越利于快速解决问题。

############################

64位的centos下安装oracle10g安装找不到libgcc_s , 原因是没有32位的gcc,找一个32位的,放到/usr/lib下就行了。

上几天在安装oracle数据库时出现错误提示,通过查询解决了相关问题,在此做记录备查;

安装平台:

硬件:HP DL385 G7

软件:Liux 5.4(RHEL_5.4 x86_64)

安装过程:

在安装过程中,出现如下提示:

经查询log日志如下:

INFO: mv -f /opt/oracle/product/10.2.0/db_1/bin/ctxlc /opt/oracle/product/10.2.0/db_1/bin/ctxlcO

INFO: mv ctxlc /opt/oracle/product/10.2.0/db_1/bin/ctxlc

INFO: chmod 751 /opt/oracle/product/10.2.0/db_1/bin/ctxlc

INFO: gcc -m32 -o ctxhx -L/opt/oracle/product/10.2.0/db_1/ctx//lib32/ -L/opt/oracle/product/10.2.0/db_1/lib32/ -L/opt/oracle/product/10.2.0/db_1/lib32/stubs/  /opt/oracle/product/10.2.0/db_1/ctx/lib/ctxhx.o -L/opt/oracle/product/10.2.0/db_1/ctx/lib/ -ldl -lm -lctxhx -Wl,-rpath,/opt/oracle/product/10.2.0/db_1/ctx/lib -lsnls10 -lnls10  -lcore10 -lsnls10 -lnls10 -lcore10 -lsnls10 -lnls10 -lxml10 -lcore10 -lunls10 -lsnls10 -lnls10 -lcore10 -lnls10  `cat /opt/oracle/product/10.2.0/db_1/lib/sysliblist`

INFO: /usr/bin/ld: crt1.o: No such file: No such file or directory

collect2:

INFO: ld returned 1 exit status

make: *** [ctxhx] Error 1

INFO: End output from spawned process.

INFO: ----------------------------------

INFO: Exception thrown from action: make

Exception Name: MakefileException

Exception String: Error in invoking target 'install' of makefile '/opt/oracle/product/10.2.0/db_1/ctx/lib/ins_ctx.mk'. See '/opt/oracle/oraInventory/logs/installActions2011-12-19_04-13-15PM.log' for details.

Exception Severity: 1

INFO: The output of this make operation is also available at: '/opt/oracle/product/10.2.0/db_1/install/make.log'

INFO:

经查是由于缺少:glibc-devel包原因,查询并安装相关包:glibc-devel-2.5-42.i386(如果是64位的操作系统,则安装glibc-devel-2.5-42.x86_64数据包)

后继续安装,后出现提示:Error in invoking target 'agent nmo nmb' of makefile '/opt/oracle/product/10.2.0/db_1/sysman/lib/ins_sysman.mk',See

'/opt/oracle/oraInvetory/logs/InstallAction2011-12-19_04-13-15PM.log' for details.

后继续搜索,发现是由于缺少:libaio-devel包引起的,安装:libaio-devel-0.3.106-3.2.i386  libaio-devel-0.3.106-3.2.x86_64包后,问题解决。

相关网址:http://blog.sina.com.cn/s/blog_65f2d7050100pybr.html

该网址有相关命令:rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' +命令  可用来查询系统是否已经安装该命令,及命令版本等信息,比较有效。

错误信息与以上帖子描述一致,但是glibc-devel已经安装,所以并没有解决我的问题,后来想到在~oracle/.bash_profile中有没有LD_LIBRARY_PATH变量,其中的路径有/usr/lib, 但是我locate了一下缺少的crt1.o,是在/usr/lib64中,于是将/usr/lib64加入该变量,看看是否可以解决该问题

应该是已经解决了,或者直接在bash中执行export LD_LIBRARY_PATH=XXXXX:/usr/lib64:/usr/lib

但是又出现一个问题:

INFO: gcc -o /opt/oracle/product/10.2.0/db_1/sysman/lib/nmccollector -L/opt/oracle/product/10.2.0/db_1/lib/ -L/opt/oracle/product/10.2.0/db_1/sysman/lib/ `cat /opt/oracle/product/10.2.0/db_1/lib/sysliblist` -Wl,-rpath,/opt/oracle/product/10.2.0/db_1/lib -lm `cat /opt/oracle/product/10.2.0/db_1/lib/sysliblist` -ldl -lm -L/opt/oracle/product/10.2.0/db_1/lib -Wl,-export-dynamic /opt/oracle/product/10.2.0/db_1/sysman/lib/snmccolm.o /opt/oracle/product/10.2.0/db_1/sysman/lib/libnmccol.a /opt/oracle/product/10
INFO: .2.0/db_1/sysman/lib/libnmcbuf.a /opt/oracle/product/10.2.0/db_1/sysman/lib//libnmadbg.a /opt/oracle/product/10.2.0/db_1/rdbms/lib/libdsga10.a /opt/oracle/product/10.2.0/db_1/lib/libserver10.a /opt/oracle/product/10.2.0/db_1/lib/libclntsh.so `cat /opt/oracle/product/10.2.0/db_1/lib/sysliblist` -ldl -lm

INFO: make[1]: Leaving directory `/opt/oracle/product/10.2.0/db_1/sysman/lib'

INFO: /opt/oracle/product/10.2.0/db_1/sysman/lib/snmccolm.o: could not read symbols: File in wrong format
collect2: ld returned 1 exit status

INFO: make[1]: *** [/opt/oracle/product/10.2.0/db_1/sysman/lib/nmccollector] Error 1
make: *** [nmccollector] Error 2

INFO: End output from spawned process.
INFO: ----------------------------------

ps:这个错误 /home/oracle/database/product/10.2.0/db_1/sysman/lib/snmccolm.o: could not read symbols: File in wrong format
可以忽略,看起来是10.2.0.1安装介质的BUG,那个snmccolm.o是IA32架构的。可以忽略,安装完成后打10.2.0.3补丁即可解决。

创建实例时出现下面的错误:

ORA-27125: unable to create shared memory segment

【转】http://www.eygle.com/rss/20111202.html

在某些操作系统上,当启动数据库或者创建数据库时都可能出现ORA-27125错误,我在Oracle Linux 6上安装Oracle 10.2.0.1,创建数据库时就遇到了这个错误。

这个错误的解决就是修改 /proc/sys/vm/hugetlb_shm_group 文件。
以下是老杨提到过的一个问题,解决方法相同:

帮客户解决一个Linux上数据库无法启动的问题。
客户的Linux 5.6 x86-64环境,安装数据库后,启动数据库报错:ORA-27125。
Oracle文档上关于ORA-27125错误的描述为:
ORA-27125: unable to create shared memory segment
Cause: shmget() call failed
Action: contact Oracle support
查询了一下,发现问题和linux上的hugetbl有关。
解决方法也很简单,首先检查oracle用户的组信息:
[oracle@yans1 ~]$ id oracle
uid=500(oracle) gid=502(oinstall) groups=502(oinstall),501(dba)
[oracle@yans1 ~]$ more /proc/sys/vm/hugetlb_shm_group
0

下面用root执行下面的命令,将dba组添加到系统内核中:

# echo 501 > /proc/sys/vm/hugetlb_shm_group
然后启动数据库,问题消失。
那么hugetlb_shm_group组是什么呢?以下是解释:
hugetlb_shm_group contains group id that is allowed to create SysV shared memory segment using hugetlb page

这里反复提到了HugePage,以下是关于HugePage的说明和解释:

When a process uses some memory, the CPU is marking the RAM as used by that process. For efficiency, the CPU allocate RAM by chunks of 4K bytes (it's the default value on many platforms). Those chunks are named pages. Those pages can be swapped to disk, etc.

Since the process address space are virtual, the CPU and the operating system have to remember which page belong to which process, and where it is stored. Obviously, the more pages you have, the more time it takes to find where the memory is mapped. When a process uses 1GB of memory, that's 262144 entries to look up (1GB / 4K). If one Page Table Entry consume 8bytes, that's 2MB (262144 * 8) to look-up.

Most current CPU architectures support bigger pages (so the CPU/OS have less entries to look-up), those are named Huge pages (on Linux), Super Pages (on BSD) or Large Pages (on Windows), but it all the same thing.

另在安装过程中遇到的操作系统验证错误,可以通过如下方式解决:
在Linux系统中安装oralce的过程中,如果Linux发行版本不是oracle的推荐版本,可能会报如下错误,导致runInstaller无法完成:
Checking operating system version: must be redhat-3, SuSE-9, redhat-4, UnitedLinux-1.0, asianux-1 or asianux-2
Failed <<<<

遇到这个问题,可以通过如下三种方式解决

1、修改Linux的发行标记

如在redhat-5上安装oracle的时候,需要将文件 '/etc/redhat-release'的内容由
Red Hat Enterprise Linux Server release 5 (Tikanga)

修改为Oracle支持的版本
Red Hat Enterprise Linux Server release 4 (Tikanga)

2、runInstaller的时候加上-ignoreSysPreReqs参数,如:
./runInstaller -ignoreSysPreReqs

3.修改oraparam.ini的参数
增加你的系统版本号

###################################################

关闭和开启Oracle数据库
关闭
#su - oracle
$lsnrctl stop
$sqlplus '/as sysdba'
sql>shutdown immediate

启动
#su - oracle
$lsnrctl start
$sqlplus '/as sysdba'

sql>startup

15、其他关闭和开启Oracle数据库的方法

15.1、在 Linux 系统下安装完数据库之后,会在$ORACLE_HOME/bin 下生成 dbstart 和 dbshut 脚
本,这两个脚本可以简便地实现启动和关闭数据库。
这两个脚本运行时会读取/etc/oratab 文件,在这个文件里指定了需要启动和关闭的 SID(相应 SID 那行的最后一个字符是 Y 而不是 N)
每次生成一个新的数据库实例,都要在这里作修改
 
15.2、dbstart、dbshut 中的 listener_home的路径要修改为ORACLE_HOME
 
15.3、这样就可以简单的使用 dbstart、dbshut 关闭和开启Oracle数据库
 
 
#######################sqlplus "/as sysdba"提示如下异常:##############
ORA-12162: TNS:net service name is incorrectly specified
指定ORACL_SID变量为当前的实例,如export ORACLE_SID=orcl

oracle Redhat64 安装错误3的更多相关文章

  1. oracle Redhat64 安装

    详细可以参考:http://blog.csdn.net/chenfeng898/article/details/8782679 直接执行如下yum安装命令后,如果再出错,跳到2 yum -y inst ...

  2. Linux下Oracle常见安装错误[Z]

    #./runInstaller之后出现如下的错误信息: RedHat AS5 x86上安装Oracle1020 Exception in thread "main" java.la ...

  3. oracle rac 安装错误整理。

    今天是2014.05.26,离别N久的博客今天继续使用. 近期一直忙着离职.入职另外加上家的网一直没有交费,弄的自己開始不那么安稳.学习就是须要一种心情平静.内心稳妥的去进行. 因换笔记本,特须要又一 ...

  4. Oracle安装错误“程序异常终止

    Oracle安装错误"程序异常终止.发生内部错误.请将以下文件提供给oracle技术支持部   "程序异常终止.发生内部错误.请将以下文件提供给oracle技术支持部门:" ...

  5. Oracle安装错误ora-00922(zhuan)

    Oracle安装错误ora-00922(缺少或无效选项) (2012-03-19 10:49:27) 转载▼ 标签: 杂谈   安装Oracle 11g R2的过程中,在新建数据库实例时出现了该错误, ...

  6. 记一次oracle安装错误:INFO: //usr/lib64/libstdc++.so.5: undefined reference to `memcpy@GLIBC_2.14'

    --一次oracle安装错误,oracle version:11.2.0.1.0[root@localhost ~]# cat /etc/issue\SKernel \r on an \m [root ...

  7. Oracle安装错误:File not found WFMLRSVCApp.ear

    oracle 11g安装过程中问题:找不到WFMLRSVCApp.ear 在 oracle 11gR2 64bit 安装到window 7 64位操作系统中,安装到53%时,提示找不到WFMLRSVC ...

  8. Oracle 10g安装教程

    首先下载安装文件,打开后文件结构如图所示: 安装之前请关闭Windows防火墙并断开网络. xp系统下直接双击运行(本经验以XP系统安装为例进行讲述). 如果是在win7上安装,如图:在setup文件 ...

  9. Oracle 10g安装64位图解流程

    1. 安装准备阶段 1.1 安装Oracle环境 本例使用X-Manager来实现与Linux系统的连接,本例使用的所有命令和操作都是在X-Manager下进行.X-Manager安装完成后的配置方法 ...

随机推荐

  1. XAF学习笔记之 Upcasting

    通常,我们会定义继承层次结构,假设有类型,CustomerBase,CustomerTrialed,CustomerRegistered三个类型,并且继承结构如下: 业务对象代码定义如下: using ...

  2. 移动端 移动web屏幕适配方案 随不同宽度的屏幕而改变

    链接地址1:http://www.cnblogs.com/zjzhome/p/4802157.html 链接地址2:http://www.html-js.com/article/Mobile-term ...

  3. Facebook内部分享:25个高效工作的小技巧

    Facebook内部分享:25个高效工作的小技巧 Facebook 内部分享:不论你如何富有,你都赚不到更多的时间,你也回不到过去.没有那么多的假如,只有指针滴答的时光飞逝和你应该好好把握的现在,以下 ...

  4. PHP面向对象(OOP)编程入门教程————如何实例化对象?

    我们上面说过面向对象程序的单位就是对象,但对象又是通过类的实例化出来的,既然我们类会声明了,下一步就是实例化对象了. 当定义好类后,我们使用new关键字来生成一个对象. $对象名称 = new 类名称 ...

  5. Linux 注意

    1. 赋值运算符= 左右之间不能加空格, 其余的都可以加空格, 而这种限制在以下情况, 可以使用空格 let "n = $1" 虽然也是赋值语句, 但是可以使用空格

  6. bootstrap学习笔记<十一>(导航条)

    基础导航条.样式:class="navbar navbar-default",属性:role="navigation" <div class=" ...

  7. JavaWeb学习总结(十三)--数据库连接池

    一.数据库连接池的概念 用池来管理Connection,这可以重复使用Connection.有了池,所以我们就不用自己来创建Connection,而是通过池来获取Connection对象.当使用完Co ...

  8. 【转载】Spark系列之运行原理和架构

    参考 http://www.cnblogs.com/shishanyuan/p/4721326.html 1. Spark运行架构 1.1 术语定义 lApplication:Spark Applic ...

  9. hdu 4521 小明系列问题——小明序列(线段树 or DP)

    题目链接:hdu 4521 本是 dp 的变形,却能用线段树,感觉好强大. 由于 n 有 10^5,用普通的 dp,算法时间复杂度为 O(n2),肯定会超时.所以用线段树进行优化.线段树维护的是区间内 ...

  10. POJ 3181 Dollar Dayz && Uva 147 Dollars(完全背包)

    首先是 Uva 147:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_p ...