- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有自己的 C++ 库,我正在改变它的构建方式(从基本的 Makefile 过渡到 CMake)。
我还有一些使用该库的 C++ 示例。
如果我使用 Makefile 构建库,示例运行得很好。如果我使用 CMake 生成的 Makefile 构建,库似乎构建得很好,但示例将失败并显示 加载共享库时出错:libfpthread.so: 无法打开共享对象文件:没有这样的文件或目录
.
$ cmake . -G 'Unix Makefiles'
-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Check if compiler accepts -pthread
-- Check if compiler accepts -pthread - yes
-- Found Threads: TRUE
-- Configuring done
-- Generating done
-- Build files have been written to: /home/joaomlneto/Documents/GitHub/fpthreads
$ make
/usr/bin/cmake -H/home/joaomlneto/Documents/GitHub/fpthreads -B/home/joaomlneto/Documents/GitHub/fpthreads --check-build-system CMakeFiles/Makefile.cmake 0
/usr/bin/cmake -E cmake_progress_start /home/joaomlneto/Documents/GitHub/fpthreads/CMakeFiles /home/joaomlneto/Documents/GitHub/fpthreads/CMakeFiles/progress.marks
make -f CMakeFiles/Makefile2 all
make[1]: Entering directory '/home/joaomlneto/Documents/GitHub/fpthreads'
make -f CMakeFiles/fpthread.dir/build.make CMakeFiles/fpthread.dir/depend
make[2]: Entering directory '/home/joaomlneto/Documents/GitHub/fpthreads'
cd /home/joaomlneto/Documents/GitHub/fpthreads && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/joaomlneto/Documents/GitHub/fpthreads /home/joaomlneto/Documents/GitHub/fpthreads /home/joaomlneto/Documents/GitHub/fpthreads /home/joaomlneto/Documents/GitHub/fpthreads /home/joaomlneto/Documents/GitHub/fpthreads/CMakeFiles/fpthread.dir/DependInfo.cmake --color=
Scanning dependencies of target fpthread
make[2]: Leaving directory '/home/joaomlneto/Documents/GitHub/fpthreads'
make -f CMakeFiles/fpthread.dir/build.make CMakeFiles/fpthread.dir/build
make[2]: Entering directory '/home/joaomlneto/Documents/GitHub/fpthreads'
[ 11%] Building CXX object CMakeFiles/fpthread.dir/src/nvrecovery.cpp.o
/usr/bin/c++ -DDETERM_MEMORY_ALLOC -DENABLE_PROFILING -DLOCK_OWNERSHIP -DNDEBUG -DSSE_SUPPORT -Dfpthread_EXPORTS -I/home/joaomlneto/Documents/GitHub/fpthreads/include -I/home/joaomlneto/Documents/GitHub/fpthreads/include/heaplayers -I/home/joaomlneto/Documents/GitHub/fpthreads/include/heaplayers/util -fPIC -g -O0 -msse2 -pthread -std=gnu++11 -o CMakeFiles/fpthread.dir/src/nvrecovery.cpp.o -c /home/joaomlneto/Documents/GitHub/fpthreads/src/nvrecovery.cpp
[ 22%] Building CXX object CMakeFiles/fpthread.dir/src/xthread.cpp.o
/usr/bin/c++ -DDETERM_MEMORY_ALLOC -DENABLE_PROFILING -DLOCK_OWNERSHIP -DNDEBUG -DSSE_SUPPORT -Dfpthread_EXPORTS -I/home/joaomlneto/Documents/GitHub/fpthreads/include -I/home/joaomlneto/Documents/GitHub/fpthreads/include/heaplayers -I/home/joaomlneto/Documents/GitHub/fpthreads/include/heaplayers/util -fPIC -g -O0 -msse2 -pthread -std=gnu++11 -o CMakeFiles/fpthread.dir/src/xthread.cpp.o -c /home/joaomlneto/Documents/GitHub/fpthreads/src/xthread.cpp
[ 33%] Building CXX object CMakeFiles/fpthread.dir/src/libdthread.cpp.o
/usr/bin/c++ -DDETERM_MEMORY_ALLOC -DENABLE_PROFILING -DLOCK_OWNERSHIP -DNDEBUG -DSSE_SUPPORT -Dfpthread_EXPORTS -I/home/joaomlneto/Documents/GitHub/fpthreads/include -I/home/joaomlneto/Documents/GitHub/fpthreads/include/heaplayers -I/home/joaomlneto/Documents/GitHub/fpthreads/include/heaplayers/util -fPIC -g -O0 -msse2 -pthread -std=gnu++11 -o CMakeFiles/fpthread.dir/src/libdthread.cpp.o -c /home/joaomlneto/Documents/GitHub/fpthreads/src/libdthread.cpp
[ 44%] Building CXX object CMakeFiles/fpthread.dir/src/logger.cpp.o
/usr/bin/c++ -DDETERM_MEMORY_ALLOC -DENABLE_PROFILING -DLOCK_OWNERSHIP -DNDEBUG -DSSE_SUPPORT -Dfpthread_EXPORTS -I/home/joaomlneto/Documents/GitHub/fpthreads/include -I/home/joaomlneto/Documents/GitHub/fpthreads/include/heaplayers -I/home/joaomlneto/Documents/GitHub/fpthreads/include/heaplayers/util -fPIC -g -O0 -msse2 -pthread -std=gnu++11 -o CMakeFiles/fpthread.dir/src/logger.cpp.o -c /home/joaomlneto/Documents/GitHub/fpthreads/src/logger.cpp
[ 55%] Building CXX object CMakeFiles/fpthread.dir/src/real.cpp.o
/usr/bin/c++ -DDETERM_MEMORY_ALLOC -DENABLE_PROFILING -DLOCK_OWNERSHIP -DNDEBUG -DSSE_SUPPORT -Dfpthread_EXPORTS -I/home/joaomlneto/Documents/GitHub/fpthreads/include -I/home/joaomlneto/Documents/GitHub/fpthreads/include/heaplayers -I/home/joaomlneto/Documents/GitHub/fpthreads/include/heaplayers/util -fPIC -g -O0 -msse2 -pthread -std=gnu++11 -o CMakeFiles/fpthread.dir/src/real.cpp.o -c /home/joaomlneto/Documents/GitHub/fpthreads/src/real.cpp
[ 66%] Building CXX object CMakeFiles/fpthread.dir/src/xmemory.cpp.o
/usr/bin/c++ -DDETERM_MEMORY_ALLOC -DENABLE_PROFILING -DLOCK_OWNERSHIP -DNDEBUG -DSSE_SUPPORT -Dfpthread_EXPORTS -I/home/joaomlneto/Documents/GitHub/fpthreads/include -I/home/joaomlneto/Documents/GitHub/fpthreads/include/heaplayers -I/home/joaomlneto/Documents/GitHub/fpthreads/include/heaplayers/util -fPIC -g -O0 -msse2 -pthread -std=gnu++11 -o CMakeFiles/fpthread.dir/src/xmemory.cpp.o -c /home/joaomlneto/Documents/GitHub/fpthreads/src/xmemory.cpp
[ 77%] Building CXX object CMakeFiles/fpthread.dir/src/xrun.cpp.o
/usr/bin/c++ -DDETERM_MEMORY_ALLOC -DENABLE_PROFILING -DLOCK_OWNERSHIP -DNDEBUG -DSSE_SUPPORT -Dfpthread_EXPORTS -I/home/joaomlneto/Documents/GitHub/fpthreads/include -I/home/joaomlneto/Documents/GitHub/fpthreads/include/heaplayers -I/home/joaomlneto/Documents/GitHub/fpthreads/include/heaplayers/util -fPIC -g -O0 -msse2 -pthread -std=gnu++11 -o CMakeFiles/fpthread.dir/src/xrun.cpp.o -c /home/joaomlneto/Documents/GitHub/fpthreads/src/xrun.cpp
[ 88%] Building CXX object CMakeFiles/fpthread.dir/src/prof.cpp.o
/usr/bin/c++ -DDETERM_MEMORY_ALLOC -DENABLE_PROFILING -DLOCK_OWNERSHIP -DNDEBUG -DSSE_SUPPORT -Dfpthread_EXPORTS -I/home/joaomlneto/Documents/GitHub/fpthreads/include -I/home/joaomlneto/Documents/GitHub/fpthreads/include/heaplayers -I/home/joaomlneto/Documents/GitHub/fpthreads/include/heaplayers/util -fPIC -g -O0 -msse2 -pthread -std=gnu++11 -o CMakeFiles/fpthread.dir/src/prof.cpp.o -c /home/joaomlneto/Documents/GitHub/fpthreads/src/prof.cpp
[100%] Linking CXX shared library libfpthread.so
/usr/bin/cmake -E cmake_link_script CMakeFiles/fpthread.dir/link.txt --verbose=1
/usr/bin/c++ -fPIC -shared -Wl,-soname,libfpthread.so -o libfpthread.so CMakeFiles/fpthread.dir/src/nvrecovery.cpp.o CMakeFiles/fpthread.dir/src/xthread.cpp.o CMakeFiles/fpthread.dir/src/libdthread.cpp.o CMakeFiles/fpthread.dir/src/logger.cpp.o CMakeFiles/fpthread.dir/src/real.cpp.o CMakeFiles/fpthread.dir/src/xmemory.cpp.o CMakeFiles/fpthread.dir/src/xrun.cpp.o CMakeFiles/fpthread.dir/src/prof.cpp.o -ldl -pthread
make[2]: Leaving directory '/home/joaomlneto/Documents/GitHub/fpthreads'
[100%] Built target fpthread
make[1]: Leaving directory '/home/joaomlneto/Documents/GitHub/fpthreads'
/usr/bin/cmake -E cmake_progress_start /home/joaomlneto/Documents/GitHub/fpthreads/CMakeFiles 0
CMakeLists.txt
cmake_minimum_required(VERSION 3.5)
project(fpthread)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED on)
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
file(GLOB src relative ${CMAKE_SOURCE_DIR} "src/*.cpp")
add_library(fpthread SHARED ${src})
target_include_directories(fpthread
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include/heaplayers
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include/heaplayers/util
)
target_link_libraries(fpthread
Threads::Threads
${CMAKE_DL_LIBS}
)
add_definitions(-g)
add_definitions(-O0)
add_definitions(-DNDEBUG)
#add_definitions(-DDEBUG)
add_definitions(-msse2 -DSSE_SUPPORT)
#add_definitions(-DCHECK_SCHEDULE)
add_definitions(-DDETERM_MEMORY_ALLOC)
add_definitions(-DENABLE_PROFILING)
#add_definitions(-DGET_CHARACTERISTICS)
#add_definitions(-DLAZY_COMMIT)
add_definitions(-DLOCK_OWNERSHIP)
#add_definitions(-DPAGE_DENSITY)
#add_definitions(-DTRACING)
#add_definitions(-D'CUSTOM_PREFIX(x)=grace\#\#x')
set(CMAKE_VERBOSE_MAKEFILE on)
message("source files:")
message(${src})
message("")
$ make -f Makefile.old
g++ -std=gnu++11 -shared -fPIC -g -DNDEBUG -msse2 -DSSE_SUPPORT -DDETERM_MEMORY_ALLOC -DENABLE_PROFILING -DLOCK_OWNERSHIP -D'CUSTOM_PREFIX(x)=grace##x' -m64 -I/home/joaomlneto/Documents/GitHub/fpthreads/include -I/home/joaomlneto/Documents/GitHub/fpthreads/include/heaplayers -I/home/joaomlneto/Documents/GitHub/fpthreads/include/heaplayers/util /home/joaomlneto/Documents/GitHub/fpthreads/src/libdthread.cpp /home/joaomlneto/Documents/GitHub/fpthreads/src/xthread.cpp /home/joaomlneto/Documents/GitHub/fpthreads/src/xrun.cpp /home/joaomlneto/Documents/GitHub/fpthreads/src/real.cpp /home/joaomlneto/Documents/GitHub/fpthreads/src/prof.cpp /home/joaomlneto/Documents/GitHub/fpthreads/src/logger.cpp /home/joaomlneto/Documents/GitHub/fpthreads/src/xmemory.cpp /home/joaomlneto/Documents/GitHub/fpthreads/src/nvrecovery.cpp -o libfpthread.so -ldl -pthread
生成文件
CXX = g++ -std=gnu++11
SRCS=$(wildcard $(PWD)/src/*.cpp)
INCLUDE_DIRS = -I$(PWD)/include -I$(PWD)/include/heaplayers -I$(PWD)/include/heaplayers/util
TARGET_X64 = libfpthread.so
TARGET_X86 = libfpthread32.so
TARGETS = $(TARGET_X64) $(TARGET_X86)
CXXFLAGS = -shared -fPIC -g
CXXFLAGS += -DNDEBUG # -DDEBUG/-DNDEBUG: enable/disable debugging
CXXFLAGS += -msse2 -DSSE_SUPPORT # Enable SS2 Support TODO automatic detection!
#CXXFLAGS += -DCHECK_SCHEDULE # Check deterministic schedule
CXXFLAGS += -DDETERM_MEMORY_ALLOC # TODO document
CXXFLAGS += -DENABLE_PROFILING # Enable execution profiling and print statistics at the end
#CXXFLAGS += -DGET_CHARACTERISTICS # Get some characteristics about running
#CXXFLAGS += -DLAZY_COMMIT # TODO document
CXXFLAGS += -DLOCK_OWNERSHIP # TODO document
#CXXFLAGS += -DPAGE_DENSITY # TODO document
#CXXFLAGS += -DTRACING # TODO document
CXXFLAGS += -D'CUSTOM_PREFIX(x)=grace\#\#x' # TODO document
CXXFLAGS32 = $(CXXFLAGS) -m32 -DX86_32BIT
CXXFLAGS64 = $(CXXFLAGS) -m64
LIBS = -ldl -pthread
.PHONY: default all x64 x86 clean
default: x64
all: x64 x86
x64: $(TARGET_X64)
x86: $(TARGET_X86)
$(TARGET_X64): $(SRCS) Makefile
$(CXX) $(CXXFLAGS64) $(INCLUDE_DIRS) $(SRCS) -o $@ $(LIBS)
$(TARGET_X86): $(SRCS) Makefile
$(CXX) $(CXXFLAGS32) $(INCLUDE_DIRS) $(SRCS) -o $@ $(LIBS)
clean:
rm -f $(TARGETS)
尺寸略有不同。
$ file fpthread_*
fpthread_cmake.so: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=69aaa475c964666aad9fb04f9cb278042ef0c367, not stripped
fpthread_make.so: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=71178ef39a4e22eb3f8e3cae9210033c18eae3d3, not stripped
$ ls ./fpthread_* -lA
-rwxrwxr-x 1 joaomlneto joaomlneto 1100184 Apr 9 14:39 ./fpthread_cmake.so
-rwxrwxr-x 1 joaomlneto joaomlneto 1100264 Apr 9 14:37 ./fpthread_make.so
$ ldd fpthread_cmake.so
linux-vdso.so.1 => (0x00007ffe64f96000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fb3604d0000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fb36014e000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fb35ff38000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fb35fd1b000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb35f951000)
/lib64/ld-linux-x86-64.so.2 (0x00007fb36092e000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fb35f648000)
$ ldd fpthread_make.so
linux-vdso.so.1 => (0x00007ffdd017a000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fcc32b6d000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fcc32950000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fcc325ce000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fcc323b8000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fcc31fee000)
/lib64/ld-linux-x86-64.so.2 (0x00007fcc32fcb000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fcc31ce5000)
FPTHREAD_HOME=../../
CC = g++
CFLAGS = -g -O0
PLIB = -lpthread
FPLIB = $(FPTHREAD_HOME)/libfpthread.so
#nvthread
INC_DIR = $(FPTHREAD_HOME)/include
SRC_DIR = $(FPTHREAD_HOME)/src
FPINCLUDE_DIRS = -I$(INC_DIR)
FPSRCS = $(SRC_DIR)/fprecovery.cpp
TARGETS=read-my-writes
.PHONY: all clean
all: $(TARGETS)
read-my-writes:
$(CC) $(CFLAGS) $(FPINCLUDE_DIRS) $(FPSRCS) read-my-writes.c -o $@ -rdynamic $(FPLIB) -ldl
clean:
rm -f *.o $(TARGETS)
reset:
rm -rf /mnt/ramdisk/fpthreads/*
rm -f /tmp/fplib.crash
在使用 CMake (cmake . -G 'Unix Makefiles'; make
) 构建 libfpthread.so
之后:
$ LD_DEBUG=all ./read-my-writes
64187:
64187: file=libfpthread.so [0]; needed by ./read-my-writes [0]
64187: find library=libfpthread.so [0]; searching
64187: search cache=/etc/ld.so.cache
64187: search path=/lib/x86_64-linux-gnu/tls/x86_64:/lib/x86_64-linux-gnu/tls:/lib/x86_64-linux-gnu/x86_64:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu/tls/x86_64:/usr/lib/x86_64-linux-gnu/tls:/usr/lib/x86_64-linux-gnu/x86_64:/usr/lib/x86_64-linux-gnu:/lib/tls/x86_64:/lib/tls:/lib/x86_64:/lib:/usr/lib/tls/x86_64:/usr/lib/tls:/usr/lib/x86_64:/usr/lib (system search path)
64187: trying file=/lib/x86_64-linux-gnu/tls/x86_64/libfpthread.so
64187: trying file=/lib/x86_64-linux-gnu/tls/libfpthread.so
64187: trying file=/lib/x86_64-linux-gnu/x86_64/libfpthread.so
64187: trying file=/lib/x86_64-linux-gnu/libfpthread.so
64187: trying file=/usr/lib/x86_64-linux-gnu/tls/x86_64/libfpthread.so
64187: trying file=/usr/lib/x86_64-linux-gnu/tls/libfpthread.so
64187: trying file=/usr/lib/x86_64-linux-gnu/x86_64/libfpthread.so
64187: trying file=/usr/lib/x86_64-linux-gnu/libfpthread.so
64187: trying file=/lib/tls/x86_64/libfpthread.so
64187: trying file=/lib/tls/libfpthread.so
64187: trying file=/lib/x86_64/libfpthread.so
64187: trying file=/lib/libfpthread.so
64187: trying file=/usr/lib/tls/x86_64/libfpthread.so
64187: trying file=/usr/lib/tls/libfpthread.so
64187: trying file=/usr/lib/x86_64/libfpthread.so
64187: trying file=/usr/lib/libfpthread.so
64187:
./read-my-writes: error while loading shared libraries: libfpthread.so: cannot open shared object file: No such file or directory
在使用旧 Makefile (make
) 构建 libfpthread.so
之后:
$ LD_DEBUG=all ./read-my-writes
63819:
63819: file=../..//libfpthread.so [0]; needed by ./read-my-writes [0]
63819: file=../..//libfpthread.so [0]; generating link map
63819: dynamic: 0x00007f13c55f5b60 base: 0x00007f13c53b2000 size: 0x0000000000259c28
63819: entry: 0x00007f13c53cd2a0 phdr: 0x00007f13c53b2040 phnum: 7
63819:
63819:
63819: file=libstdc++.so.6 [0]; needed by ./read-my-writes [0]
63819: find library=libstdc++.so.6 [0]; searching
63819: search cache=/etc/ld.so.cache
63819: trying file=/usr/lib/x86_64-linux-gnu/libstdc++.so.6
63819:
63819: file=libstdc++.so.6 [0]; generating link map
63819: dynamic: 0x00007f13c53aad50 base: 0x00007f13c5030000 size: 0x0000000000381400
63819: entry: 0x00007f13c50b9d20 phdr: 0x00007f13c5030040 phnum: 8
63819:
63819:
63819: file=libc.so.6 [0]; needed by ./read-my-writes [0]
63819: find library=libc.so.6 [0]; searching
63819: search cache=/etc/ld.so.cache
63819: trying file=/lib/x86_64-linux-gnu/libc.so.6
63819:
63819: file=libc.so.6 [0]; generating link map
63819: dynamic: 0x00007f13c5029ba0 base: 0x00007f13c4c66000 size: 0x00000000003c99a0
63819: entry: 0x00007f13c4c86950 phdr: 0x00007f13c4c66040 phnum: 10
63819:
63819:
63819: file=libdl.so.2 [0]; needed by ../..//libfpthread.so [0]
63819: find library=libdl.so.2 [0]; searching
63819: search cache=/etc/ld.so.cache
63819: trying file=/lib/x86_64-linux-gnu/libdl.so.2
63819:
63819: file=libdl.so.2 [0]; generating link map
63819: dynamic: 0x00007f13c4c64d88 base: 0x00007f13c4a62000 size: 0x00000000002030f0
63819: entry: 0x00007f13c4a62da0 phdr: 0x00007f13c4a62040 phnum: 7
63819:
63819:
63819: file=libgcc_s.so.1 [0]; needed by ../..//libfpthread.so [0]
63819: find library=libgcc_s.so.1 [0]; searching
63819: search cache=/etc/ld.so.cache
63819: trying file=/lib/x86_64-linux-gnu/libgcc_s.so.1
63819:
63819: file=libgcc_s.so.1 [0]; generating link map
63819: dynamic: 0x00007f13c4a612b0 base: 0x00007f13c484c000 size: 0x0000000000215910
63819: entry: 0x00007f13c484ea70 phdr: 0x00007f13c484c040 phnum: 6
63819:
63819:
63819: file=libpthread.so.0 [0]; needed by ../..//libfpthread.so [0]
63819: find library=libpthread.so.0 [0]; searching
63819: search cache=/etc/ld.so.cache
63819: trying file=/lib/x86_64-linux-gnu/libpthread.so.0
63819:
63819: file=libpthread.so.0 [0]; generating link map
63819: dynamic: 0x00007f13c4846d50 base: 0x00007f13c462f000 size: 0x000000000021c428
63819: entry: 0x00007f13c46350b0 phdr: 0x00007f13c462f040 phnum: 9
63819:
63819:
63819: file=libm.so.6 [0]; needed by /usr/lib/x86_64-linux-gnu/libstdc++.so.6 [0]
63819: find library=libm.so.6 [0]; searching
63819: search cache=/etc/ld.so.cache
63819: trying file=/lib/x86_64-linux-gnu/libm.so.6
63819:
63819: file=libm.so.6 [0]; generating link map
63819: dynamic: 0x00007f13c462dd88 base: 0x00007f13c4326000 size: 0x00000000003080f8
63819: entry: 0x00007f13c432b600 phdr: 0x00007f13c4326040 phnum: 7
63819:
...
请注意:
最佳答案
我想我了解您的问题,并且有可能的解决方案。尝试将此添加到您的 CMakeLists.txt:
set_property(TARGET fpthread PROPERTY NO_SONAME ON)
并重建libfpthread.so
。
出现这种情况的原因是:
当可执行文件链接到具有 DT_SONAME 字段的共享对象时,当可执行文件运行时,动态链接器将尝试加载由 DT_SONAME 字段指定的共享对象,而不是使用给链接器的文件名.
摘自:https://linux.die.net/man/1/x86_64-linux-gnu-ld.bfd ,在 -soname
选项文档下。
另请参阅:https://cmake.org/cmake/help/latest/prop_tgt/NO_SONAME.html
关于c++ - 将 Makefile 翻译成 CMakeLists;无法加载共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49735023/
Java 库和 android 库有什么区别,各自有什么优点/缺点? 最佳答案 您可以在 Android 应用程序中包含标准 Java .jar 文件库。它们在 .apk 构建时被翻译成 Dalvik
所以,我现在的代码就像从 Java 层加载库(比如 liba.so),并在内部 liba.so 加载 libb.so。因此,如果我必须将所有库打包到 APK 中并将其安装在没有 root 访问权限的设
我想在我的系统中设置 LEDA 库。 我已经从以下链接下载了 LEDA 库 http://www.algorithmic-solutions.info/free/d5.php Instruct
我想用 autoconf 创建一个共享库。但是,我希望共享库具有“.so”扩展名,而不是以“lib”开头。基本上,我想制作一个加载 dlopen 的插件。 .是否有捷径可寻? 当我尝试使用 autoc
我需要在 Apps 脚本应用程序上修改 PDF。为此,我想使用 JS 库:PDF-LIB 我的代码: eval(UrlFetchApp.fetch("https://unpkg.com/pdf-lib
我正在构建一个使用以下 Boost header 的程序(我使用的是 Microsoft Visual C++ 10), #include #include #include #include
当我通过 cygwin 在 hadoop 上运行此命令时: $bin/hadoop jar hadoop-examples-*.jar grep input output 'dfs[a-z.]+' 我
我已经通过 vcpgk 成功安装了一个 C++ 库,名为:lmdb:x64-windows 我还安装了lmdb通过 Cabal 安装的 Haskell 绑定(bind)包 在尝试测试 lmdb 包时:
我该如何解决这个问题? 我刚刚将 javacv jar 文件复制到我的项目 Lib 文件夹下,但出现了这个错误! 我可以找到这个thread来自谷歌,但不幸的是,由于我国的谷歌限制政策,该页面无法打开
我有一个 Android 库项目 FooLib。 FooLib 引用 Android Context 之类的东西,但不需要任何资源文件(res/ 中的东西)所以我目前将其打包为供我的应用使用的 JAR
我正在开发一个 Android 应用程序(使用 Android Studio),它能够通过手势识别算法了解您正在进行的 Activity 。对于我使用 nickgillian ithub 帐户上可用的
关于从 .NET Framework 项目中引用 .NET Standard 类库的问题有很多类似的问题,其中 netstandard 库中的 NuGet 包依赖项不会流向 netframework
我已经从互联网上下载了 jna-4.2.2.jar,现在想将这个 jar 导入到我的项目中。但是当我试图将这个 jar 导入我的项目时,出现以下错误。 [2016-06-20 09:35:01 - F
我正在尝试通过编译在 Mac 上安装 rsync 3.2.3。但是,我想安装所有功能。为此,它需要一些库,此处 ( https://download.samba.org/pub/rsync/INSTA
进入 Web 开发有点困难。过去 5 年我一直致力于 winforms 工作。所以我正在努力从一种切换到另一种。前段时间,我使用过 JavaScript,但现在还没有大量的 JavaScript 库
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我正在寻找一个用Python编写的与logstash(ruby + java)类似的工具/库。 我的目标是: 从 syslog 中解析所有系统日志 解析应用程序特定日志(apache、django、m
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
我花了几天时间试图寻找用于 JavaPOS 实现的 .jar 库,但我找不到任何可以工作的东西。我找到了很多像这样的文档:http://jpos.1045706.n5.nabble.com/file/
这个问题在这里已经有了答案: Merge multiple .so shared libraries (2 个答案) 关闭 9 年前。 我有我在代码中使用的第三方库的源代码和对象。该库附带有关如何使
我是一名优秀的程序员,十分优秀!