공유 라이브러리 libA.so을 성공적으로 생성했습니다.
내부의 모든 클래스는, namspace 일반적인 가지고 ::공유 라이브러리를 서로 공유 라이브러리 공유 C++
ldd libA.so
linux-vdso.so.1 => (0x00007fffd632d000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f6497d19000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f6497b03000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f6497743000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f6497447000)
/lib64/ld-linux-x86-64.so.2 (0x00007f6498243000)
을 그럼, 다른 라이브러리를 만들 필요가, B, 그건 그래서 내가 그것을 연결도 (샹그릴라와 -L < path_to_A>)와 A.를 사용 _I /로 컴파일하십시오. 내부 모든 클래스는, 일반적인 namspace :: B
컴파일을 가지고 libB.so 만들지 만 :
Multiple markers at this line
- Symbol '<A_method>' could not be resolved
- Function '<A_method>' could not be resolved
:
1) Elipse 내가이 메소드를 호출 코드에서 빨간색 X를 넣어
ldd libB.so
linux-vdso.so.1 => (0x00007fffbcbfe000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f695ca59000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f695c842000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f695c483000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f695bf7e000)
/lib64/ld-linux-x86-64.so.2 (0x00007f695d1d9000)
:
2) 도서관 A는 B에 연결되지 않은 것 같다
libA.so => .....
모든 아이디어 : 나는에 대한 링크가없는 이유
나는 이해할 수 없다?
갱신
이 (일식에 의해 자동 생성) 메이크입니다 : 당신이 Makefile을 사용하는 경우
-include ../makefile.init
RM := rm -rf
# All of the sources participating in the build are defined here
-include sources.mk
-include src/network/mqtt/subdir.mk
-include src/data/subdir.mk
-include 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
# Add inputs and outputs from these tool invocations to the build variables
# All Target
all: libB.so
# Tool invocations
libB.so: $(OBJS) $(USER_OBJS)
@echo 'Building target: [email protected]'
@echo 'Invoking: GCC C++ Linker'
g++ -L/path_where_is_A_so/ -shared -o "libB.so" $(OBJS) $(USER_OBJS) $(LIBS)
@echo 'Finished building target: [email protected]'
@echo ' '
# Other Targets
clean:
-$(RM) $(LIBRARIES)$(CC_DEPS)$(C++_DEPS)$(C_UPPER_DEPS)$(CXX_DEPS)$(OBJS)$(CPP_DEPS)$(C_DEPS) libB.so
[email protected] ' '
.PHONY: all clean dependents
.SECONDARY:
-include ../makefile.targets
나는 그것을 즉시 닫을 뜻은 아니며 단지 그것이 중복임을 제안했습니다. 질문에 답변하지 않는다고 생각하시면 의견을 보내 주시면 다시 열어 드리겠습니다. – MByD
나는 같은 경우가 아니라고 생각한다. 나는 정적 라이브러리 (.a)와 공유 라이브러리 (.so)로 작업하고있다. –
그것은 공유 라이브러리와 정적 라이브러리 모두에서 작동한다. 시도해 보라. – MByD