EBS: collect2: ld returned 1 exit status, Relink of module "FEMCCE" failed.

本文记录了Oracle EBS环境下模块FEMCCE在重链接过程中遇到的错误,具体表现为ld返回1状态退出。通过修改adrelinknew.sh文件中的CPP_LDFLAGS设置,增加-Wl,--noinhibit-exec选项解决了该问题。

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

adrelink is exiting with status 1

End of adrelink session
Date/time is  Thu Jan 9 20:31:34 CST 2014
**********************************************************
Original copy is /data02/rlpdpre/apps/apps_st/appl/admin/rlpdpre/log/adrelink.lsv
New copy is /data02/rlpdpre/apps/apps_st/appl/admin/rlpdpre/log/adrelink.log

An error occurred while relinking application programs.
Continue as if it were successful [No] :


查看 /data02/rlpdpre/apps/apps_st/appl/admin/rlpdpre/log/adrelink.log文件内容如下: 
... 
of /data02/rlpdpre/apps/apps_st/appl/fem/12.0.0/lib/libfem.a(FCMathExecOp.o)
collect2: ld returned 1 exit status
make: *** [/data02/rlpdpre/apps/apps_st/appl/fem/12.0.0/bin/FEMCCE] Error 1
Done with link of fem executable 'FEMCCE' on Thu Aug 15 18:24:00 CST 2013

Relink of module "FEMCCE" failed.
See error messages above (also recorded in log file) for possible reasons for the failure.  Also, please check that the Unix userid
running adrelink has read, write, and execute permissions on the directory /data02/rlpdpre/apps/apps_st/appl/fem/12.0.0/bin,
and that there is sufficient space remaining on the disk partition containing your Oracle Applications installation.

Done with link of product 'fem' on Thu Aug 15 18:24:00 CST 2013

解决方法: 

"On R12.1.3, The Patch 9239090 Failed During The Relink of FEMCCE module, what Is the Potential solution? [ID 1303269.1]":

vi $AD_TOP/bin/adrelinknew.sh
replace:
CPP_LDFLAGS=' -L$(ORACLE_HOME)/lib -L$(ORACLE_HOME)/lib/stubs -lclntsh'
with:
CPP_LDFLAGS=' -L$(ORACLE_HOME)/lib -L$(ORACLE_HOME)/lib/stubs -lclntsh -Wl,--noinhibit-exec'

本文转自ITPUB博客tolywang的博客,原文链接:EBS: collect2: ld returned 1 exit status, Relink of module "FEMCCE" failed. ,如需转载请自行联系原博主。

<think>好的,我现在需要帮用户解决编译器在链接阶段出现的&ldquo;ld returned 1 exit status”错误。用户提到了collect2.exe error,这通常和链接器ld的问题有关。首先,我得回忆一下常见的导致这个错误的原因,然后根据用户提供的引用信息来找出可能的解决方法。 首先,看用户提供的引用[1]、[2]、[3]、[4],这些案例都涉及链接器错误。比如引用[1]是Arduino编译时的错误,引用[2]是找不到特定的库文件(-lunitree_legged_sdk_amd64),引用[3]是链接模块失败,引用[4]是gcc的问题。这些情况都可能导致链接器返回exit status 1。 可能的原因有几个方向: 1. 缺少库文件或路径未正确设置。例如,引用的库不存在或路径未包含在链接器的搜索路径中。比如引用[2]中的错误就是因为找不到-lunitree_legged_sdk_amd64这个库。 2. 编译器配置错误,例如使用错误的编译器选项或者编译器本身的问题。比如引用[4]中提到的gcc失败,解决方案是更换编译器类型。 3. 权限问题,可能无法访问某些文件或目录,导致链接器无法完成工作。 4. 代码中的符号错误,比如函数或变量未定义,或者重复定义,也可能导致链接失败。 5. 系统环境变量或路径设置不正确,导致链接器找不到必要的工具或库。 接下来,我需要整理这些可能的原因,并给出对应的解决方案。例如,针对库文件缺失的问题,应该检查库是否存在,路径是否正确添加到链接器的参数中。对于编译器配置问题,可能需要修改配置文件,如引用[4]中提到的distutils.cfg,将编译器从mingw32改为msvc。 此外,还要考虑用户的特定环境,比如操作系统是Windows还是Linux,不同的系统路径和工具有所不同。用户提到的案例中有Windows的Arduino问题,也有Linux下的make错误,所以解决方案可能需要分情况讨论。 最后,要确保解决方案步骤清晰,用户能够一步步排查问题,比如先检查库路径,再验证编译器配置,然后检查权限和符号定义等。同时,提醒用户查看详细的日志文件,如引用[3]中的adrelink.log,以获取更多错误细节,这对诊断问题非常重要。</think>### 解决链接阶段错误"ld returned 1 exit status"的方法 #### 1. 检查库文件缺失问题 当出现类似`/usr/bin/ld: cannot find -l<库名>`的报错时,表示链接器无法找到指定的库文件。例如引用[2]中的`-lunitree_legged_sdk_amd64`,解决方法: - 确认库文件是否存在:检查`libunitree_legged_sdk_amd64.so`或`.a`文件路径 - 添加库搜索路径:使用`-L`参数指定路径,如: ```bash gcc -o output -L/path/to/libs -lunitree_legged_sdk_amd64 ``` - 验证环境变量:设置`LD_LIBRARY_PATH`(Linux)或`PATH`(Windows) #### 2. 编译器配置验证 若出现类似引用[4]的gcc编译错误: - 修改Python的`distutils.cfg`配置文件(路径如`Anaconda/Lib/distutils/distutils.cfg`) - 将编译器从mingw32改为msvc: ```ini [build] compiler = msvc ``` #### 3. 检查符号定义冲突 查看错误日志中是否有`undefined reference`或`multiple definition`信息: - 使用`nm`命令检查目标文件符号表 - 确保所有函数/变量有且仅有一个定义 - 使用`extern`关键字声明外部符号 #### 4. 权限和路径验证 如引用[3]中的Oracle EBS错误: - 检查文件权限:`chmod +x /data02/.../libfem.a` - 确认磁盘空间:`df -h`查看分区剩余空间 - 验证路径包含特殊字符:避免空格或中文字符路径 #### 5. 构建系统配置 ```makefile # 示例Makefile设置库路径 LDFLAGS = -L/usr/local/custom_libs LIBS = -lunitree_legged_sdk_amd64 -lpthread all: target target: obj1.o obj2.o $(CC) $(LDFLAGS) $^ -o $@ $(LIBS) ``` #### 6. 多平台解决方案对比 | 平台 | 检查项 | 工具命令 | |---------|-------------------------|-----------------------| | Windows | 环境变量PATH | `echo %PATH%` | | Linux | 动态库路径 | `ldconfig -p \| grep <库名>` | | macOS | Framework路径 | `otool -L <可执行文件>` | ### 典型案例分析 1. **Arduino编译错误**[^1] - 解决方法:清理临时编译文件,重新安装Arduino IDE - 检查板卡型号选择是否正确 2. **Python扩展编译错误**[^4] ```bash # 验证编译器配置 python setup.py build_ext --inplace --verbose ``` - 输出编译详细信息定位错误环节 3. **Oracle EBS链接错误**[^3] - 检查`libfem.a`归档文件完整性 - 重新生成目标文件:`ar -x libfem.a && ar -rcs libfem_new.a *.o`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值