解决因迁移导致的所有编译错误后,现在存在库的链接器错误。
原始输出如下(项目中的某些名称因显而易见的原因被替换):
----------------------------------------------------------------
(G) Linking module_name.o to make module_name
LDOPTS set to:
SHLIB Temp Path: /tmp/fbaSHLIBs020217035348fbamgr
FBA libraries: -L/tmp/fbaSHLIBs020217035348fbamgr -lfba -lprocessControl
Application libraries: -L/opt/app/fba/devl_rel_ver/bin/lib -lfba -lprojNameGenEdit -lprojNameTraceTool -lprojNameTables -lprojNameCommCcSc -lprojNamerecProc -lprojNameGenMap -lprojNameLogicalTracker -lprojNameCallCodes -lprojNameStrCodes -lprojNameFileVal -lprojNameReports -L -ltmi -L/opt/IBM/db2/V8.1/lib64 -ldb2
g++ -o module_name module_name.o \
\
-I/opt/app/fba/devl_rel_ver/common \
-L/tmp/fbaSHLIBs020217035348fbamgr -lfba -lprocessControl \
-L/opt/app/oraclnt/oracle/product/11.2.0.3/lib -lclntsh \
`cat /opt/app/oraclnt/oracle/product/oraclient/lib/ldflags` \
`cat /opt/app/oraclnt/oracle/product/oraclient/lib/sysliblist` \
-L/opt/app/fba/devl_rel_ver/bin/lib -lfba -lprojNameGenEdit -lprojNameTraceTool -lprojNameTables -lprojNameCommCcSc -lprojNamerecProc -lprojNameGenMap -lprojNameLogicalTracker -lprojNameCallCodes -lprojNameStrCodes -lprojNameFileVal -lprojNameReports -L$TMI_HOME -ltmi -L/opt/IBM/db2/V8.1/lib64 -ldb2
/usr/bin/ld: cannot find -lfba
collect2: ld returned 1 exit status
make: *** [module_name] Error 1
临时文件夹中的文件(同样,上面的名称替换已完成):
ls /tmp/fbaSHLIBs020217035348fbamgr
libfba.sl libprojNameCallCodes.sl libprojNameFileVal.sl libprojNameGenMap.sl libprojNamerecProc.sl libprojNameStrCodes.sl libprojNameTraceTool.sl
libprocessControl.sl libprojNameCommCcSc.sl libprojNameGenEdit.sl libprojNameLogicalTracker.sl libprojNameReports.sl libprojNameTables.sl
我尝试了什么:
没有任何作用!
请问,我缺少什么想法?
答案 0 :(得分:1)
似乎.sl文件是HP-UX共享库,而linux使用.so扩展名来共享库。似乎您将HP-UX库复制到Linux,但这不起作用。
唯一的解决方案是获取适用于Linux的等效库文件,并使用正确的.so扩展名。