ubuntu 动态库(Ubuntu更新软件源)
今天给各位分享ubuntu 动态库的知识,其中也会对Ubuntu更新软件源进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
ubuntu下安装oracle缺少很多包怎么解决
Ubuntu12.04安装Oracle10g全过程(完美)及问题解决办法
PS:正常情况下,完美无错。。如果遇到问题,也有解决办法1.安装前准备工作
1.1到oracle官网下载适合自己电脑的oracle软件包;我的是:Oracle Database 10gRelease 2(10.2.0.1.0)Enterprise/Standard Edition for Linux x86下的:10201_database_linux32.zip地址:更新ubuntu
# apt-get update
# apt-get upgrade
1.3安装额外的javaJDK
可在【Ubuntu软件中心】搜OPENjdk,安装OpenJDK完成后path路径自动设置好了1.4安装缺少的包并降低GCC版本
apt-get install gcc make binutils lesstif2 libc6 libc6-dev rpm libmotif3 libaio1 alienapt-get install ksh libtool libstdc++5 build-essential compat-libstdc++卸载gcc-4.6,安装gcc-4.4版本
apt-get remove gcc-4.6
apt-get install gcc-4.4
1.5创建oracle用户
登录到root用户下操作:
1.5.1修改shell
ls-l/bin/sh如果是dash修改为bash
rm/bin/sh
ln-s/bin/bash/bin/sh
1.5.2创建用户和组及oracle安装路径
addgroup oinstall
addgroup dba
addgroup nobody
usermod-g nobody nobody
adduser oracle
usermod-g oinstall-G dba oracle
id oracle
id nobody
mkdir-p/opt/oracle
mkdir-p/opt/oradata
chown-R oracle:dba/opt/ora*
chmod-R 775/opt/ora*
1.5.3创建欺骗版本声明
vi/etc/redhat-release
然后向其中加入 Red Hat Linux release 3.1
1.5.4建立链接
ln-s/usr/bin/gcc-4.4/usr/bin/gcc
ln-s/lib/i386-linux-gnu/libgcc_s.so.1/lib/libgcc.s.so.1ln-s/usr/bin/awk/bin/awk
ln-s/usr/bin/rpm/bin/rpm
ln-s/usr/bin/basename/bin/basename
mkdir/etc/rc.d
ln-s/etc/rc0.d/etc/rc.d/rc0.d
ln-s/etc/rc1.d/etc/rc.d/rc1.d
ln-s/etc/rc2.d/etc/rc.d/rc2.d
ln-s/etc/rc3.d/etc/rc.d/rc3.d
ln-s/etc/rc4.d/etc/rc.d/rc4.d
ln-s/etc/rc5.d/etc/rc.d/rc5.d
ln-s/etc/rc6.d/etc/rc.d/rc6.d
ln-s/etc/init.d/etc/rc.d/init.d
1.5.5添加用户到sudoer列表中
vi/etc/sudoers
在“ root ALL=(ALL:ALL) ALL”下一行,添加:
oracle ALL=(ALL:ALL) ALL
1.5.6修改内核参数和系统变量
A修改/etc/sysctl.conf文件(可以不用修改)
gedit/etc/sysctl.conf
添加如下内容:
kernel.shmall= 2097152
kernel.shmmax= 2147483648
kernel.shmmni= 4096
kernel.sem= 25 32000 100 128
fs.file-max= 65536
net.ipv4.ip_local_port_range= 1024 65000B修改/etc/security/limits.conf(可以不用修改)gedit/etc/security/limits.conf
添加如下内容:
* soft nproc 2407
* hard nproc 16384
* soft nofile 1024
* hard nofile 65536
说明:不要忘了“*”号,可以换成oracle
C修改ubuntu的oracle用户的环境变量
修改/home/oracle/.profile和/etc/profile两个文件vi/home/oracle/.profile
vi/etc/profile
添加如下内容:
#oracle_path start
export ORACLE_HOME=/opt/oracle
export ORACLE_SID=orcl
export ORACLE_OWNER=oracle
export PATH=$PATH:$ORACLE_HOME/bin
#oracle_path end
1.5.7使参数生效
重启系统或终端执行命令 sysctl-p
1.5.8将下载好的oracle安装文件mv到/home/oracle下,并解压。注销root用户,登录oracle用户2.开始安装oracle
2.1打开终端,cd到/home/oracle/database的oracle解压文件下,执行下面这条命令./runInstaller-jreLoc/usr/lib/jvm/java-6-openjdk-i386/jrejava-version是java的安装版本,这一句是为了在图像化装oracle是不会出现乱码或者方框然后就向windows下安装一样的图像化安装界面。
不行的话,使用英文安装界面
export LANG=ENGLISTH
./runInstaller
2.2按照下面的图像步骤操作
执行到配置配置脚本时
切换到root下,在终端中执行脚本
/home/oracle/oralnventory/orainstRoot.sh
/opt/ora10/root.sh
2.4出现oracle database 10g安装完成时,记下两个URL。
2.5安装数据库
在终端中执行如下命令:
$dbca//如果出现中文乱码,执行下面命令$cd/opt/ora10/bin
$gedit dbca
在dbca中找到“JRE_DIR=/opt/ora10/jdk/jre”,替换为JRE_DIR=/usr/lib/jvm/java-1.6.0-openjdk/jre,然后保存退出$dbca//正常显示了
2.6按照下面步骤执行
但是:要将数据库名字及SID都要写上orcl
一直到安装完成。
3.启动oracle
在“终端”以oracle身份运行
启动TNS监听器:$ORACLE_HOME/bin/lsnrctl start($ORACLE_HOME,就是oracle的安装目录:/opt/ora10.直接cd,进入oracle的安装目录,到bin文件夹下,$lsnrctl start,也行)。
关闭TNS:$ORACLE_HOME/bin/lsnrctl stop
启动sqlplus:$ORACLE_HOME/bin/sqlplus/nolog关闭sqlplus:SQL> exit
4.为了能够像windows下一样能够使用上下键翻动命令,还需要安装rlwrap包:
sudo apt-get install rlwrap
然后修改oracle用户的~/.bashrc文件和/etc/profile文件,在其最后添加两行:
这样上下左右键就可以使用了。
最后来解决oracle中文字符集的问题。不出意外的话,启动oracle会发现所有的中文都是“?”,要么就是乱码,这其实是服务器端字符集和客户端字符集不一致造成的。
解决方法为:DBA身份进入sqlplus,做查询
SQL>select userenv(‘language’) from dual;将查询结果复制,在/etc/bash.bashrc文件中再加一行:export NLS_LANG=”查询结果”,重新登录问题解决。例如:我的查询结果为SIMPLIFIED CHINESE_CHINA.AL32UTF8,则新加一行为export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"。
但是有时候这个方法不一定奏效,你可以将
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"分别写到两个文件中尝试一下,但是两个文件写的一定要一致。
5.如果有问题可按下列过程处理:
5.1
问题:调用makefile'../sqlplus/lib/ins_sqlplus.mk'的目标'install'时出错。请参阅'/home/oracle/oraInventory/logs/installActions2011-12-06_11-03-18AM.log'以了解详细信息。
解决办法:$ORACLE_HOME/sqlplus/lib/env_sqlplus.mk添加一行:EXPDLIBS=-lclntsh,然后点击“重试”按钮, ok.
其实安装 gcc-4.4以后没有这个问题。
5.2
问题:调用makefile'../sysman/lib/ins_sysman.mk'的目标'agent nmo nmb'时出错。请参阅'../oraInventory/logs/installActions2011-12-06_11-03-18AM.log'以了解详细信息。
分析:后面遇到的错误其实本质上是一个问题,主要是gcc的版本高了,oracle10g的gcc是3.4左右的版本,但是ubuntu的开发速度早就用了4.0以上版本,而且你还无法apt安装低版本解决办法:卸载gcc-4.6,安装gcc-4.4版本
apt-get remove gcc-4.6
apt-get install gcc-4.4
5.3
调用makefile'../network/lib/ins_net_server.mk'的目标'install'时出错。请参阅'../oraInventory/logs/installActions2011-12-06_11-03-18AM.log'以了解详细信息。
分析:我在网上找到了一篇类似的文档,参见(点击打开链接),但是我手工编译还是有问题,而且在oracle10g中并不是他所提到的-lons参数问题。
还是gcc版本问题,我曾尝试过安装低版本的gcc,但是一开始编译就报错,所以放弃了,如果有人能成功降低版本环境,相信一定能解决所有错误问题,这也是为什么ubuntu 8能很自然成功安装的一个解释。
方法:目前我还没有方法,按照其.mk文件的说明,这个东西好像是数据库链接断裂时候重新链接用的解决办法:卸载gcc-4.6,安装gcc-4.4版本
在/usr/bin下做了/usr/bin/gcc-4.4的软链接cd/usr/bin
ln-s/usr/bin/gcc-4.4/usr/bin/gcc
5.4
调用makefile'../rdbms/lib/ins_rdbms.mk'的目标'all_no_orcl ihsodbc'时出错。请参阅'../oraInventory/logs/installActions2011-12-06_11-07-36-AM.log'以了解详细信息。
分析:我们看一下log文件
信息: Generating BASE ORASDK library...
信息: Creating/opt/ora10/lib/liborasdkbase.so.10.2信息: gcc:错误:/lib/libgcc_s.so.1:没有那个文件或目录gcc:错误:/usr/lib/libstdc++.so.5:没有那个文件或目录我们看到终于是那个非常多的错误了,其实还是gcc的问题,重新下载了libgcc_s.so.1,并且重新做了stdc++5的链接,但是问题还是更多,因为只做软链接和下载一个动态库是没法解决所有问题的。
解决办法:安装compat-libstdc++-33_3.2.3-48.3_i386.deb,重试。。
在一个libgcc_s.so.1软链接
cd/lib
ln-s/lib/i386-linux-gnu/libgcc_s.so.1 libgcc.s.so.16.开机启动
6.1 root下面修改:vi/etc/oratab
orc1:/opt/oracle/product/10.2.0/db_1:Y
将N该为Y
6.2 oracle下面修改:
cd$ORACLE_HOME/bin
vi dbstart
找到 ORACLE_HOME_LISTNER这行,修改成:
ORACLE_HOME_LISTNER=/opt/oracle/product/10.2.0/db_1或者直接修改成:
ORACLE_HOME_LISTNER=$ORACLE_HOME
测试运行 dbshut, dbstart看能否启动oracle服务及listener服务ps-efw| grep ora_
lsnrctl status
ps-efw| grep LISTEN| grep-v grep
6.3 root下创建文件:
vi/etc/rc.d/init.d/oracle10
#!/bin/bash
# chkconfig: 345 99 10
# description: Startup Script for Oracle Databases#/etc/init.d/oracle10
export ORACLE_SID=ym
# export ORACLE_HOME_LISTNER=/data/files/oracle/10g/bin#oracle安装目录
export ORACLE_HOME=/data/files/oracle/10gexport PATH=$PATH:$ORACLE_HOME/bin
case"$1" in
start)
su oracle-c$ORACLE_HOME/bin/dbstart#启动服务su oracle-c$ORACLE_HOME/bin/lsnrctl start#启动监听touch/var/lock/oracle
echo"OK"
;;
stop)
echo-n"Shutdown Oracle:"
su oracle-c$ORACLE_HOME/bin/dbshut#启关闭服务su oracle-c$ORACLE_HOME/bin/lsnrctl stop#关闭监听rm-f/var/lock/oracle
echo"OK"
;;
*)
echo"Usage:'basename$0' start|stop"
exit 1
esac
exit 0
然后
chmod 775 oracle10
chkconfig--add oracle10
chkconfig--list oracle10
Ubuntu静态库怎么使用
-供参考
linux静态库的生成与使用
1、windows系统包括静态链接库(*.lib文件)和动态链接库(*.dll文件)。
2、linux通常把库文件存放在/usr/lib或/lib目录下。
linux库文件名:前缀lib、库名和后缀3部分组成,其中动态链接库以.so作为后缀,静态链接库通常以.a作为后缀。
区别:
静态链接库的代码在编译时就拷贝到应用程序中,这样的优点是节省编译时间动态库是程序在开始运行后调用库函数时才被载入。
静态库的创建和使用
1、在一个头文件中声明静态库所导出的函数。
2、在一个源文件中实现静态库所导出的函数。
3、编译源文件,生成可执行代码(.o文件)
4、将可执行代码所在的目标文件加入到某个静态库中,并将静态库拷贝到系统默认的存放文件的目录下。
例如:mylib.h声明函数, mylib.c实现函数
1、编译mylib.c生成目标文件:gcc-o mylib.o-c mylib.c
2、将目标文件加入到静态库中:ar rcs libmylib.a mylib.o
3、将静态库copy到linux的库目录(/usr/lib或者/lib)下:
cp libmylib.a/usr/lib/libmylib.a
4、在调用库函数的文件中添加#include"mylib.h"这样就可调用静态库中函数
5、使用静态库编译:gcc-o main main.c-l mylib
注意:编译时无需带上前缀和后缀。这就是为什么在使用libxml2时librareis(-l)设置为:xml2
-梁兆铃
ubuntu加载动态库
上一节介绍了动态库的制作方法,点击链接查看。然而在执行程序时,常遇到动态库加载失败问题,错误信息提示“Cannot open shared object file: No such file or directory”。下面将介绍四种解决方法,优先推荐后三种。
首先,通过`ldd+可执行程序名称`检查动态库依赖关系。若出现`not found`,表示加载失败。
方法1:使用`LD_LIBRARY_PATH`添加路径。语法为`export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:+动态库的绝对路径`。动态库如`libcalc.so`位于`lib`目录下,使用`pwd`获取其绝对路径。通过`echo`验证环境变量添加是否成功。重新执行`ldd`检查依赖关系,若显示动态库则表示成功。
注意,方法1的设置仅对当前终端有效,重新打开终端需再次添加。
方法2:进入`home`目录,配置`.bashrc`文件。使用`vim.bashrc`编辑,于文件末尾插入`export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:动态库的绝对路径`。通过`source.bashrc`或`..bashrc`使修改生效,再次执行`ldd main`查看。
方法3:在`etc/profile`文件末尾添加路径。使用`sudo vim/etc/profile`编辑,加入`export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:动态库的绝对路径`。执行`source/etc/profile`验证配置,重新运行程序。
方法4:修改`etc/ld.so.conf`文件。进入文件`sudo vim/etc/ld.so.conf`,在文件中加入动态库的绝对路径。使用`sudo ldconfig`使配置生效,再执行`ldd main`检查。
总结:推荐使用后三种方法,方法1仅在当前终端生效。希望这能帮助您解决动态库加载问题。学习编程是一个持续的过程,不论何时开始都不晚。祝您在C++学习之路上不断进步。——一棵小树,持续学习编程。