编译fortran文件时,如何解决“在创建共享库时无法使用针对'.rodata'的重定位R_X86_64_32s”链接错误

时间:2018-12-27 08:38:50

标签: c++ fortran

我正在尝试在Ubuntu 16.04OS中通过eclipse juno IDE编译一个包含10个fortran文件的c ++项目。该项目已编译,.o文件已经生成,同时链接显示“ Vc3ded.o(fortran obj文件)在创建共享库时无法使用针对“ .rodata”的重定位R_X86_64_32S:使用-fPIC“重新编译。

我尝试通过Eclipse IDE设置使用-fPIC编译项目。 交叉验证了共享库.so文件的路径

Makefile如下所示

-include ../makefile.init

RM := rm -rf

-include sources.mk
-include src/simgear/xml/subdir.mk

-include objects.mk

ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(CC_DEPS)),)
-include $(CC_DEPS)
endif
ifneq ($(strip $(C++_DEPS)),)
-include $(C++_DEPS)
endif
ifneq ($(strip $(C_UPPER_DEPS)),)
-include $(C_UPPER_DEPS)
endif
ifneq ($(strip $(CXX_DEPS)),)
-include $(CXX_DEPS)
endif
ifneq ($(strip $(CPP_DEPS)),)
-include $(CPP_DEPS)
endif
ifneq ($(strip $(C_DEPS)),)
-include $(C_DEPS)
endif
endif

-include ../makefile.defs

all: OWI_SIM

OWI_SIM: $(OBJS) $(USER_OBJS)
    @echo 'Building target: $@'
    @echo 'Invoking: GCC C++ Linker'
    g++ -L/usr/lib -L/usr/local/include -L/usr/local/lib64 -L/usr/lib/x86_64-linux-gnu -o "OWI_SIM" $(OBJS) $(USER_OBJS) $(LIBS)
    @echo 'Finished building target: $@'
    @echo ' '

clean:
    -$(RM) $(CC_DEPS)$(C++_DEPS)$(EXECUTABLES)$(C_UPPER_DEPS)$(CXX_DEPS)$(OBJS)$(CPP_DEPS)$(C_DEPS) OWI_SIM
    -@echo ' '

.PHONY: all clean dependents
.SECONDARY:

-include ../makefile.targets

1 个答案:

答案 0 :(得分:0)

我通过在日食设置中使用-fPIC进行了编译