我刚开始使用Eclipse并开发一个将在Linux上运行的应用程序(在ARM处理器上)。我想使用OpenCV库(.so文件)。我的应用程序由链接到多个静态库的可执行文件组成。这个链接是在IDE设置(ARM linux g++链接器设置)中配置的。我需要在这些静态库中使用openCV。openCV库包括在中安装的.so文件。是否可以从我的静态库中链接到这些库?我不知道该怎么安排。显然,静态库项目中没有g++链接器设置。谢谢你的帮助。
我有一个共享库,由另一个我无法控制的应用程序使用,它需要*.so对象。我的库使用了需要静态链接的sqlite3 (我绝对需要一个自包含的二进制文件)。
当我试图编译和链接我的库时:
-fpic -flto -pthread -m64
-flto -static -shared
最后会出现以下错误:
/usr/bin/ld: /usr/local/lib/gcc/x86_64-unknown-linux-gnu/4.6.1/crtbeginT.o: relocation R_X86_64_32 against `__DTOR_END__' can not be used when mak
我需要创建一个共享库,它自己的依赖项(包括libc/libstdc++ )必须静态地链接到它,以生成一个自包含的二进制文件。我试过这样做
g++ -c -fpic -o foo.o foo.cpp
g++ -static -shared -o foo.so foo.o
在以下几个方面都失败了:
/usr/bin/ld.bfd.real: /usr/local/lib/gcc/x86_64-unknown-linux-gnu/5.2.0/crtbeginT.o: relocation R_X86_64_32 against `__TMC_END__' can not be us
我认为这是行不通的,但我只是把我的程序文件从本地机器上传到亚马逊EC2上的一个新实例。而不是试图运行它:
[ec2-user@domU-12-31-39-14-2A-1A ~]$ ./webserver.net
-bash: ./webserver.net: /lib/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
显然没有/lib/ld-linux-x86-64.so.2。它是一个64位实例。
如何以EC2实例为目标在本地机器上编译/链接。我不想在这个例子上建立它。
我的制作文件
OBJECTS= ./
我正在linux上使用c++开发一个g++应用程序。我的应用程序链接在一个共享库中,它公开了我需要的一个简单的API。这个库在内部引用了大量额外的共享库。我必须找到每一个,并将它们添加到我的Makefile中,以获得它们的链接。
我想我的应用程序必须链接到主库所依赖的任何一个库。只有这样才能满足这种链接需求,即在所有依赖项的静态库中编译主库吗?这是否适用于通过dlopen/dlsym使用插件模型?
ty
我使用docker来使用g++编译一个g++项目,并且在使用多阶段的dockerfile时遇到了一个奇怪的情况。我把它简化成了一个小测试用例
FROM alpine:3 AS build
RUN apk add g++
COPY main.cpp main.cpp
RUN g++ main.cpp
FROM alpine:3 AS run
# RUN apk add g++ # Uncommenting this line will make it work for me
COPY --from=build /a.out /a.out
ENTRYPOINT ["/a.out"
我猜问题在于g++版本7.3.0仍然使用旧的stdc lib,我不确定..
我该怎么检查呢?如何升级到新版本,因为应用程序的运行时错误
看起来像这样:
./a.out
./a.out: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by ./a.out)
./a.out: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./a.out)
这就是我现在所拥有的:
g++ -v
Using built-i