怎么让gcc编译出来的so文件不依赖于libgcc s.so.1

怎么让gcc编译出来的so文件不依赖于libgcc_百度知道
怎么让gcc编译出来的so文件不依赖于libgcc
提问者采纳
/* main.c */#include &stdio.h&int main(int argc, char *argv[]) {
fprintf(stderr,&argc: %d\n&,argc);
for(i=0;i&i++) {
fprintf(stderr,&argv[%d]: %s\n&,i,argv[i]);
return 0;}time gcc -O2 main.c -o mainldd ./main 返回
linux-vdso.so.1 =&
(0x00007fff9fbfe000)
libc.so.6 =& /lib/x86_64-linux-gnu/libc.so.6 (0x01000)
/lib64/ld-linux-x86-64.so.2 (0xe6000)size main 查看大小
main静态编译(加上-static参数):time gcc -O2 -static main.c -o mainldd ./main 返回 “不是动态可执行文件”。size main 查看大小
filename 782762
资深电脑人
其他类似问题
为您推荐:
gcc的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁怎么让gcc编译出来的so文件不依赖于libgcc_s.so.1? - 开源中国社区
当前访客身份:游客 [
当前位置:
在solaris上用gcc编译一个程序得到动态链接库test.so.&
用ldd test.so命令查看,可以知道test.so依赖于/opt/csw/lib/libgcc_s.so.1.
如果把test.so拿到另外一个没有按照gcc的solaris系统中,运行就会有问题,提示不能加载
/opt/csw/lib/libgcc_s.so.1。
有什么办法让编译出来的test.so不依赖于libgcc_s.so.1呢?
共有2个答案
<span class="a_vote_num" id="a_vote_num_
/* main.c */
#include &stdio.h&
int main(int argc, char *argv[]) {
fprintf(stderr,&argc: %d\n&,argc);
for(i=0;i&i++) {
fprintf(stderr,&argv[%d]: %s\n&,i,argv[i]);
time gcc -O2 main.c -o main ldd ./main 返回 &&& linux-vdso.so.1 =&& (0x00007fff9fbfe000) && &libc.so.6 =& /lib/x86_64-linux-gnu/libc.so.6 (0x01000) && &/lib64/ld-linux-x86-64.so.2 (0xe6000) size main 查看大小 && text&& &&& data&& &&&& bss&& &&&& dec&& &&&& hex&& &filename && 1408&& &&&& 560&& &&&&& 16&& &&& 1984&& &&&& 7c0&& &main
静态编译(加上-static参数): time gcc -O2 -static main.c -o main ldd ./main 返回 “不是动态可执行文件”。 size main 查看大小 && text&& &&& data&& &&&& bss&& &&&& dec&& &&&& hex&& &filename &782762&& &&& 7532&& &&& 9632&& & 799926&& && c34b6&& &main
--- 共有 1 条评论 ---
我是想编译成共享库, .so格式的,-static参数不行,要-shared。编译出来后就有依赖。
(2年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
我记得gcc是有静态编译功能的,可以将依赖一并编译,运行时不再需要依赖共享库
更多开发者职位上
有什么技术问题吗?
绝对零度的其它问题
类似的话题解决打造交叉编译工具链时报错“/libgcc.mvars: No such file or directory make”_解决执行ERP前的基础管理薄弱策略(转)_解决找不到ContentType类的有关问题__脚本百事通
稍等,加载中……
^_^请注意,有可能下面的2篇文章才是您想要的内容:
解决打造交叉编译工具链时报错“/libgcc.mvars: No such file or directory make”
解决执行ERP前的基础管理薄弱策略(转)
解决找不到ContentType类的有关问题
解决打造交叉编译工具链时报错“/libgcc.mvars: No such file or directory make”
解决制作交叉编译工具链时报错“/libgcc.mvars: No such file or directory make”当自己手动制作交叉编译工具链时,需要编译binutils,gcc等,其中编译过程绝对是很纠结的,一次通过的可能性不大,本文只针对一种类型的错误进行说明。
错误示例如下:
test -f config.h || (rm -f stamp-h1
&& make stamp-h1) make[2]: Leaving directory /home/zql/build/arm64-toolchain/gcc/aarch64-branch/host-x86_64-unknown-linux-gnu/libcpp'
make[2]: Entering directory/home/zql/build/arm64-toolchain/gcc/aarch64-branch/host-x86_64-unknown-linux-gnu/libdecnumber'
make[2]: Nothing to be done for all'. make[2]: Leaving directory/home/zql/build/arm64-toolchain/gcc/aarch64-branch/host-x86_64-unknown-linux-gnu/libdecnumber'
make[2]: Entering directory /home/zql/build/arm64-toolchain/gcc/aarch64-branch/host-x86_64-unknown-linux-gnu/gcc'
make[2]: Leaving directory/home/zql/build/arm64-toolchain/gcc/aarch64-branch/host-x86_64-unknown-linux-gnu/gcc'
Checking multilib configuration for libgcc... make[2]: Entering directory /home/zql/build/arm64-toolchain/gcc/aarch64-branch/aarch64-none-linux/libgcc'
Makefile:161: ../.././gcc/libgcc.mvars: No such file or directory make[2]: *** No rule to make target../.././gcc/libgcc.mvars'.
Stop. make[2]: Leaving directory /home/zql/build/arm64-toolchain/gcc/aarch64-branch/aarch64-none-linux/libgcc'
make[1]: *** [all-target-libgcc] Error 2 make[1]: Leaving directory/home/zql/build/arm64-toolchain/gcc/aarch64-branch'
make: *** [all] Error 2
编译gcc时,需要注意一个原则:不要再gcc的源码中直接执行./configure、make、make install等命令,需要在源码目录下另外新建一个目录,在新建的目录中执行以上命令。
why?请看:http://gcc.gnu.org/install/build.html,为了防止该网址失效,我摘录重要部分如下:
If you encounter seemingly strange errors
when trying to build the compiler in a directory other than the source directory, it could be because you have previously configured the compiler in the source directory. Make sure you have done all the necessary preparations.
不要小看这个提示,好多错误都出自这里。好,问题有了,解决办法呢?很简单:假如gcc源码在/source目录下,
# cd /source
# mkdir build
# cd build
# ../configure....
以上指令的意思就是,在gcc的源码目录下新建一个目录,然后进入这个目录中执行configure,因为新建了目录,所以configure程序在上一个目录中,需要用".../configre"命令执行配置命令。
还有个需要注意的,如果编译一次报错了,没通过,需要执行make distclean清除以前的残留信息,或者干脆重新解压一份新源码再次编译。
Now,问题解决!
解决执行ERP前的基础管理薄弱策略(转)
解决实施ERP前的基础管理薄弱策略(转)本帖最后由 yanlongwuhui 于
11:09:35 编辑
ERP项目实施了大半年,项目最后却以失败告终。到底是ERP软件问题,还是ERP实施出了问题呢?他召集全体项目组成员和ERP厂商代表开了个没完没了的会议。结果厂商实施顾问说,不是ERP软件的功能达不到,而是企业的基础管理太差了,达不到ERP的实施要求。正如没有打好基础就直接在沙堆上建高楼大厦,发生倒塌是必然的事情。
  厂商实施顾问的这种事不关己和推卸责任的态度让他愤愤不平。在给我的电话说:“ERP不就是用来提高企业管理水平的吗?为什么厂商的实施顾问要把ERP实施失败全推到企业基础管理薄弱上来呢?”这是一个很有趣的提问。那么,什么是企业基础管理呢?上ERP系统需要什么样的基础管理呢?
  一.为什么ERP实施前要做好基础管理?
  企业在实施ERP项目时差强人意的原因有很多,有人说是因为软件选型失败(占55%),或因为管理协调不够而失败(占25%),或因为实施失误而失败(占30%)。但却很少有人去思考,在ERP实施之前自己企业的基础管理是否已经满足了ERP的实施要求。其实,以上的失败原因都是基于企业已经满足了实施ERP基础条件的这一假设上,但恰恰是这个假设才是ERP实施失败的最主要原因之一。简单的说,就是基础管理才是决定或影响到企业实施ERP成败的关键因素。
  在管理学上,基础管理有很多不同的定义和理解,但总的来说主要是体现在企业如何抓好日常管理,如何把企业战略细化为具体的、可操作性的规则和制度上。有一句通俗的话是这样说的:魔鬼藏于细节,说的就是细节的重要性。因此,基础管理主要是从微观上分析的,包括标准化、定额、计量、信息、规章制度等五个方面。更简单的说,基础管理就是“五化”:制度化、流程化、标准化、表单化、数据化。
  因此,在ERP实施时有一句口诀是:企业必须先做到“流程清、数据准、规则明”。换句话说就是,企业在实施ERP之前就必须先做好基础管理工作。否则,没有良好的基础而去实施ERP,就如同在一个地基还没有建好的地方上盖摩天大厦,时刻都有倒塌的危险。
  (1)“流程清”的核心是流程标准化
  企业的经营活动是由许多流程所构成的,如采购、供应、财务、人力资源、生产、设备、销售等。实施ERP系统实际上就是将这些流程整合起来,提高效率和降低成本。所以,企业在实施ERP 时关注的焦点应该是流程而不是软件技术。有一句俗话是这样说的:如果说数据是ERP实施的基石,那么流程就是ERP实施的灵魂了。
  大家都知道,ERP强调的是流程的标准化和固定化,没有流程的标准化就没有ERP实施成功的可能。因此,流程缺乏标准化对于急于实施ERP的企业是致命的,因为没有先把流程合理化、标准化就去把流程固化到ERP系统里,企业在处理业务时就必然会感到不顺畅。所以,“先流程标准化,后信息化”是实施ERP倡导的一条基本原则。也只有将企业所有的业务流程都整理出来,实现标准化、程序化和书面化,把企业的业务流程从“人治”提升到“法制”的层面,实施ERP才会做到“流程清”,才会事半功倍。
  (2)“数据准”在于准确计量和定额
  说到数据在ERP应用中的重要性,大家最常挂在嘴边的一句话是“三分技术、七分管理、十二分数据”。因为没有高质量的数据,ERP应用就成了无源之水。因为数据错误的话,即使ERP上线了也是没有任何意义的,反而会是系统失败或者掉线的导火索。
  ERP数据分为静态数据和动态业务数据。静态数据包括基础数据和期初数据,只有准确无误的把静态数据录入ERP系统,ERP系统才会有一个良好的开端。否则,ERP系统在原始账目时就已经出错了。至于动态数据就有一句更通俗的话,就是“垃圾数据进,就会垃圾数据出”。因此,当没有真实可靠的数据基础时,希望ERP应用能带来效率的提高也就成一句空话。所以,做好基础管理的定额和计量工作,是保证ERP数据质量的先决条件,也是保证ERP数据质量的关键一步。
  (3)“规则明”在于制度规范化
  在ERP实施中,没有把ERP实施当作是一场管理制度规范化的运动是大多数ERP项目没有成功的主要原因。因为ERP上线是一种部门利益和人员利益重新分配的过程,是规范化制度和随心所欲的管理习惯发生冲突的过程。经验告诉我们,基础管理薄弱的企业,普遍会存在“无法可依”、或“有法不依”的“人治”管理,这种非规范化的管理方式是与ERP实施所要求的“法治”方式是相违背的。
  例如,当企业的规章制度不明确时,或制度没有被有效执行时,利益冲突往往会导致ERP实施名存实亡,ERP实施也就必然会搁浅。大多数基础管理水平差的企业,ERP失败或效果不佳的症结也就在于此。因此,理顺了流程关和数据关并不代表ERP就能够顺利上线,为了ERP能顺利实施、上线及运行,必须还要用规范化的制度来保证ERP实施活动能被正确的执行。
二.企业解决基础管理薄弱的策略
  从上述分析可知,ERP实施强调先要打好基础管理,并不是毫无根据凭空抛出的一个概念,而是符合ERP实施要求的。因为只有加强基础管理,才能使日常工作步入专业化、制度化的轨道。所以,希望打好基础管理的企业,可参考以下的方法和策略:
  (1)从流程标准化着手,建立明确的流程框架
  据调查显示,许多准备实施ERP的企业在业务流程上还停留在“随意性强”的阶段上,因此要求企业在应用ERP之前先要把流程形成制度化、标准化以及表单化。例如,先建立以责、权、利为基础的流程框架,然后通过这种基础管理建设使企业常规的事件纳入标准化、规范化、表单化的流程管理,以形成统一、规范和相对稳定的管理体系,以此提高ERP实施的成功率。
  (2)从制度规范化开始,做到有法可依
  当企业的规模越来越大时,千头万绪的事情也会越来越多。如果这时企业的管理还处于“人治”的管理阶段,难度就会非常大。因此,企业需要先制定一套规范化的控制系统,使企业的每一个岗位、每一个活动、每一个时刻都处于受控之中,使到企业能做到决策程序化、考核定量化、权责明晰化、措施具体化和控制过程化,最终也能确保ERP实施的顺利执行。
  (3)认真做好定额和计量,确保数据真实可靠
  任何数据都是由一定的“量”组成,因此为了确切地获得其真实数量值,必须要做好计量工作。正如门捷列夫所说:没有计量,便没有数据。计量是企业生产的技术基础,如从原材料的筛选到定额投料,从工艺流程监控到产品的品质检验,都离不开计量。简单的说,没有准确的计量,就没有可靠的数据,当然也就无法确保ERP系统需要的高质量数据了。因此,只有认真做好计量工作,才能保证计量数据的有效性,再经过长期数据积累和统计分析,就能制定出合理的定额,也只有这样才能真正得到高质量的ERP数据。
  总的来说,夯实的基础管理是ERP实施成功的基石。如果企业在基础管理上不能达到一定的程度,又不愿意下决心和下功夫去解决,这样就不应该匆忙的进行ERP建设,因为在这样的情况下实施ERP系统,效益注定是不佳的。------解决方案--------------------有道理,赞一个!------解决方案--------------------流程清是很难做到的,数据准差强人意,至于规则明更是无法量化的东西.国内erp实施的时候无法应付的软环节实在太多了.------解决方案--------------------标准就是客户能否符合所谓的ERP标准。实施就是想办法让客户符合标准,不符合的地方就想办法让他符合,但一句话,标准不能变,其他都好说。
把鞋子做大一些,然后定下标准,这就是大用户的标准。因为鞋子确实够大,那脚要比鞋子大的还真少,这样也不用要求用户削足,只要用户多穿些袜子,穿进去就可以了,以后客户长大了,就脱一些袜子。帮客户穿袜子要收费,脱袜子呢当然也得收费了,但鞋子是不能换的。这就是目前ERP软件的现状。
符合标准的就是好的管理,不符合的就是差劲的。如此一刀切,难怪失败。
解决找不到ContentType类的有关问题
解决找不到ContentType类的问题
使用MultipartEntity 中的StringBody时,有个参数为ContentType。但一直找找不到,编译器不报错,运行时就报错:
unable to resolve static field 6967 (DEFAULT_BINARY) in Lorg/apache/http/entity/ContentT
后来才发现原来是少导入了httpcore.jar包(之前只导入了httpmime.jar包)
好像提示:NoClassDefFoundException也是这个问题所致(求证?)
如果您想提高自己的技术水平,欢迎加入本站官方1号QQ群:&&,&&2号QQ群:,在群里结识技术精英和交流技术^_^
本站联系邮箱:新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
UID8545590空间积分0 积分19阅读权限10帖子精华可用积分19 信誉积分102 专家积分0 在线时间4 小时注册时间最后登录
白手起家, 积分 19, 距离下一级还需 181 积分
帖子主题精华可用积分19 信誉积分102 专家积分0 在线时间4 小时注册时间最后登录
论坛徽章:0
问题是这样的,我现在分别编译出了三个.so文件,分别是a.so b.so c.so
现在想通过gcc把这三个.so文件连成一个.so
不是用.o文件,直接用.so文件,不知道能不能实现?实现的命令是什么?
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
UID空间积分0 积分156960阅读权限100帖子精华可用积分156960 信誉积分3846 专家积分55 在线时间5885 小时注册时间最后登录
帖子主题精华可用积分156960 信誉积分3846 专家积分55 在线时间5885 小时注册时间最后登录
论坛徽章:88
原帖由 catoran 于
10:28 发表
问题是这样的,我现在分别编译出了三个.so文件,分别是a.so b.so c.so
现在想通过gcc把这三个.so文件连成一个.so
不是用.o文件,直接用.so文件,不知道能不能实现?实现的命令是什么?
Why you want to do this?
I can explain it for you, but I can’t understand it for you.
UID8545590空间积分0 积分19阅读权限10帖子精华可用积分19 信誉积分102 专家积分0 在线时间4 小时注册时间最后登录
白手起家, 积分 19, 距离下一级还需 181 积分
帖子主题精华可用积分19 信誉积分102 专家积分0 在线时间4 小时注册时间最后登录
论坛徽章:0
原帖由 MMMIX 于
10:29 发表
Why you want to do this?
因为这三个.so的空间加起来太大了,想通过连接成一个.so来压缩一点点空间
UID空间积分0 积分156960阅读权限100帖子精华可用积分156960 信誉积分3846 专家积分55 在线时间5885 小时注册时间最后登录
帖子主题精华可用积分156960 信誉积分3846 专家积分55 在线时间5885 小时注册时间最后登录
论坛徽章:88
原帖由 catoran 于
10:31 发表
因为这三个.so的空间加起来太大了,想通过连接成一个.so来压缩一点点空间
为什么你觉得把它们合并在一起使用的空间会小?
I can explain it for you, but I can’t understand it for you.
UID8545590空间积分0 积分19阅读权限10帖子精华可用积分19 信誉积分102 专家积分0 在线时间4 小时注册时间最后登录
白手起家, 积分 19, 距离下一级还需 181 积分
帖子主题精华可用积分19 信誉积分102 专家积分0 在线时间4 小时注册时间最后登录
论坛徽章:0
原帖由 MMMIX 于
11:12 发表
为什么你觉得把它们合并在一起使用的空间会小?
我已经用所有相关的.o文件做成了一个总的.so文件,总空间比三个加起来要小
用这样的方法用做,Makefile改的东西太多,且还有几个这样的工作要做,工作量太大
UID9101475空间积分804 积分2511阅读权限50帖子精华可用积分2511 信誉积分108 专家积分8 在线时间9 小时注册时间最后登录
小富即安, 积分 2511, 距离下一级还需 2489 积分
帖子主题精华可用积分2511 信誉积分108 专家积分8 在线时间9 小时注册时间最后登录
论坛徽章:0
不要编成so, 编成 3个 .a 这样 make file 改动少,把 .a连接起来即可
UID空间积分0 积分156960阅读权限100帖子精华可用积分156960 信誉积分3846 专家积分55 在线时间5885 小时注册时间最后登录
帖子主题精华可用积分156960 信誉积分3846 专家积分55 在线时间5885 小时注册时间最后登录
论坛徽章:88
原帖由 catoran 于
12:06 发表
我已经用所有相关的.o文件做成了一个总的.so文件,总空间比三个加起来要小
少了多少?你有没有 strip?
I can explain it for you, but I can’t understand it for you.
UID空间积分1 积分10160阅读权限90帖子精华可用积分10160 信誉积分51 专家积分20 在线时间145 小时注册时间最后登录
大富大贵, 积分 10160, 距离下一级还需 9840 积分
帖子主题精华可用积分10160 信誉积分51 专家积分20 在线时间145 小时注册时间最后登录
论坛徽章:0
对动态库不了解,我觉得要是有特殊的工具应该可以
招聘虚拟化网络工程师,对linux,kvm,network,security感兴趣者,打造云安全最强团队,地点北京
助人者自助之
UID8545590空间积分0 积分19阅读权限10帖子精华可用积分19 信誉积分102 专家积分0 在线时间4 小时注册时间最后登录
白手起家, 积分 19, 距离下一级还需 181 积分
帖子主题精华可用积分19 信誉积分102 专家积分0 在线时间4 小时注册时间最后登录
论坛徽章:0
原帖由 connet 于
13:50 发表
不要编成so, 编成 3个 .a 这样 make file 改动少,把 .a连接起来即可
用静态库的话,空间会更大啊
UID8545590空间积分0 积分19阅读权限10帖子精华可用积分19 信誉积分102 专家积分0 在线时间4 小时注册时间最后登录
白手起家, 积分 19, 距离下一级还需 181 积分
帖子主题精华可用积分19 信誉积分102 专家积分0 在线时间4 小时注册时间最后登录
论坛徽章:0
原帖由 MMMIX 于
13:54 发表
少了多少?你有没有 strip?
空间小了4.2%
所有的都用了strip}

我要回帖

更多关于 libgcc s.so.1 32位 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信