c/c++语言开发共享文件无法识别:无法识别文件格式

当我运行make文件时,我收到此错误

“obj / viojournal.o:文件无法识别:文件格式无法识别collect2:ld返回1退出状态”

和make文件如下

如何解决这个问题。 我在centos 5.4 linx 64bit机器上使用gcc编译器。

all: libvioft.so fdump syncer CPPFLAGS = -I/usr/include/libxml2 -I../clogger -I../marshall -I../ddp  -I../http -I../xml -I../nfsop -I../include/common -I../restful  -I../include/oneGrid CFLAGS = -g3 -Wall -Wextra -fPIC -DREPLICATION_ENABLED -DJOURNALING_ENABLED #CFLAGS = -g3 -Wall -Wextra -fPIC LDFLAGS = -Wl,-rpath=$$ORIGIN -Wl,-rpath=$$ORIGIN/../clogger  -Wl,-rpath=$$ORIGIN/../marshall -Wl,-rpath=$$ORIGIN/../ddp  -Wl,-rpath=$$ORIGIN/../http -Wl,-rpath=$$ORIGIN/../xml  -Wl,-rpath=$$ORIGIN/../restful LIBS = -lpthread -lssl -lxml2 -lbz2 -L../clogger -lclogger  -L../marshall -lmarshall -L../ddp -lddp -L../nfsop -lnfsop libsources = filefs.c viojournal.c recvReplicaUpdate.c syncer.c hostops.c filetable.c updateRemoteFT.c checkpoint.c #libsources = filefs.c viojournal.c hostops.c filetable.c checkpoint.c container.c locks.c libobjects = $(libsources:%.c=obj/%.o) fttestsources = fttest2.c fttestobjects = $(fttestsources:%.c=obj/%.o) syncersources = syncer.c syncerobjects = $(syncersources:%.c=obj/%.o) #dmpsources = viodump.c hostops.c #dmpobjects = $(dmpsources:%.c=obj/%.o) libvioft.so: $(libobjects) $(CC) $(CFLAGS) -shared -o libvioft.so $(libobjects) fdump: $(fttestobjects) libvioft.so $(CC) $(CFLAGS) $(LDFLAGS) $(LIBS) -o fdump $(fttestobjects) syncer: $(syncerobjects) libvioft.so $(CC) $(CFLAGS) $(LDFLAGS) $(LIBS) -o syncer $(syncerobjects) viodump: $(dmpobjects) $(CC) $(CFLAGS) $(LDFLAGS) -lpthread -o viodump $(dmpobjects) clean: rm -rf fttest viodump atar syncer libvioft.so obj install: cp -f libvioft.so ../package/lib # cp -f syncer ../package/bin obj/%.d: %.c $(SHELL) -ec 'mkdir -p obj && $(CC) -MM $(CPPFLAGS) $(CFLAGS) -MT $(@:.d=.o) -MT $@ $ $@' obj/%.o: %.c $(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $< include $(libsources:%.c=obj/%.d) include $(tstsources:%.c=obj/%.d) include $(atrsources:%.c=obj/%.d) #include $(dmpsources:%.c=obj/%.d) 

    似乎目标文件以某种方式被破坏了。 尝试删除它以强制重建它或@devnull建议,做一个make clean

    (我会把这个建议作为评论,但我还不够,声誉还没有)

    我最近遇到了这个错误,我有几个建议可能有所帮助。

    就我而言,有问题的makefile需要不同的CFLAGS具体取决于安装是64位还是32位。 以下是README一些内容

    By default, the C/C++ software are compiled in 32 bits with the options (-Os) but can be compiled in 64 bits, -m64 is added to the CFLAGS variable in

    我的建议是首先尝试将-m64添加到您的CFLAGS 。 如果这不起作用,请删除-m64并将其替换为-Os

    也就是说,首先尝试使用以下行:

     CFLAGS = -g3 -Wall -Wextra -fPIC -DREPLICATION_ENABLED -DJOURNALING_ENABLED -m64 

    然后,从命令行运行

     make clean 

    随后是您用于安装的任何make命令。

    如果这不起作用,请将相关行更改为

     CFLAGS = -g3 -Wall -Wextra -fPIC -DREPLICATION_ENABLED -DJOURNALING_ENABLED -Os 

    然后make clean ,另一个make东西。

    如果某些C对象是64位且有些是32位(我不知道这种情况是否确实存在),您可能需要做一些不同的事情。

    这在我的案例中有效,您可以在此处看到详细信息。

    请评论,如果它适合您,请告诉我。

    需要了解更多c/c++开发分享文件无法识别:无法识别文件格式,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!

      以上就是c/c++开发分享文件无法识别:无法识别文件格式相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/980116.html

      (0)
      上一篇 2021年12月13日
      下一篇 2021年12月13日

      精彩推荐