windows 也有这样的问题,后来参考 visual studio 设置 cpp flags 后解决了。 但是 mac 找了一堆参数还是不行。
cmake . -G "Unix Makefiles"
cmake --build . --config Release
生成的文件导出的 string 有本地文件夹路径字符串(但实际项目里面并没有用到__path__)
下图是用 cutter (开源反编译工具 https://github.com/rizinorg/cutter ,类似 IDA pro )
添加了一些参数(-flto ,-g0 还是不行),求大佬指点迷津
1
lixile 4 天前
取消-dynamic 的编译宏
然后编译后 strip 一下 |
2
ecnelises 4 天前
这个路径是 macOS ld 写到里面的 rpath ,你用 otool -l main_1 就能打印出来。rpath 是告诉 loader 启动程序时去哪里找依赖的动态库的路径列表。所以你要去搜能不能在 CMake 里改 rpath
|
3
wjx0912 OP @lixile @ecnelises
感谢 2 位老总。对 mac 实在是不熟悉。cmake 乱加一通算是搞定了,虽然有些参数还不太理解: set(CMAKE_CXX_VISIBILITY_PRESET hidden) SET(CMAKE_CXX_FLAGS "-g -w -O2") LINK_FLAGS "-Wl,-F/Library/Frameworks" set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -g0 -Wl,--strip-all -s -flto -fomit-frame-pointer -fvisibility=hidden") set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -dead_strip -Wl,-strip-all -flto -s -fvisibility=hidden -Xlinker") set(MACOSX_RPATH TRUE) set(CMAKE_SKIP_BUILD_RPATH FALSE) set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) set(CMAKE_INSTALL_RPATH "@loader_path") set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) 编译完再 strip 。基本没有冗余了 |