相关疑难解决方法(0)

"gcc -s"和"strip"命令有什么区别?

我想知道这两者有什么区别:

  • gcc -s:从可执行文件中删除所有符号表和重定位信息.

  • strip:丢弃目标文件中的符号.

它们有相同的含义吗?

你用哪一个:

  • 减少可执行文件的大小?
  • 加快运行速度?

gcc symbols strip

66
推荐指数
4
解决办法
7万
查看次数

如何避免iOS二进制文件中的符号和源路径?

当我编译我的iOS应用程序的发布版本(基于标准的Apple提供的iOS应用程序模板)时,查看生成的可执行二进制文件,我看到各种符号甚至本地cpp源文件和标题路径.我真的很难过为什么会这样(我没有启用RTTI*).特别是源文件路径让我感到不舒服在全球范围内发送这个应用程序(为什么每个人都能看到我的开发机器的目录布局?).

这是两个(随机选择,主持)摘录:

TS/../ACTORS/CActorCanvasCharPart.cpplastMeshcapVerticesOFF BOUNDSupload VERTICES: %d 20CActorCanvasCharPartgrassscrub/Volumes/Data/iOS_projects/code/MyAppName_proj/MyAppName/source/STATES/GAMES/2/CStateGame2_grass.cppbaseShadowmowerstartmowerloopmowermowerCharcutGrassChargrassStuffgrassParticles/Volumes/Data/iOS_projects/code/MyAppName_proj/MyAppName/source/STATES/GAMES/2/CStateGame2_grass.h17CStateGame2_grasssinwriteStroke/Volumes/Data/iOS_projects/code/MyAppName_proj/MyAppName/source/STATES/GAMES/2/CStateGame2_flowers.hflowerBedsandTrailclickstart3inplace2sandDrag/Volumes/Data/iOS_projects/code/MyAppName_proj/MyAppName/source/STATES/GAMES/2/CStateGame

以下是自定义类型和结构的许多符号:

CAssetMgr="_vptr$CMgrBase"^^?"pMain"^{CMain}"inited"B"curveCount"S"curveSpecs"^{CCurveSpec}"gameSpecs"[23{CGameStateSpec="header"{SpecDiskHeader="type"i"version"S}"gameID"C"backgroundColor"{CRGBAcolorf="r"f"g"f"b"f"a"f}"clickPointColor"{CRGBAcolorf="r"f"g"f"b"f"a"f}"clickPointIconColor"{CRGBAcolorf="r"f"g"f"b"f"a"f}"hintColor"{CRGBAcolorf="r"f"g"f"b"f"a"f}}]"currentFont"^{CCharset}"userCharParts"^^{CCharPart}"words"{CDataSet<CName4,CCharArray>="_vptr$CObjectBase"^^?"pMain"^{CMain}"count"i"data"*"dataSize"l}"sets"{CDataSet<CName16,CCharArray>="_vptr$CObjectBase"^^?"pMain"^{CMain}"count"i"data"*"dataSize"l

这可以避免,怎么样?

*更新:我刚发现RTTI默认开启.所以我清理了目标,禁用了RTTI(GCC_ENABLE_CPP_RTTI = NO)并重新编译.我仍然在二进制文件中看到很多符号和源路径.

更新2:我从应用程序商店检查了一些其他应用程序,其中许多也显示了他们的源文件路径.非常可怕,如果你问我:

Joined Up Lite
/Users/lloydy/Documents/Development/iPhone/ABC Joined Up/main.m
/Users/lloydy/Documents/Development/iPhone/ABC Joined Up/Classes/SettingsView.m

Crayon Physics
/Users/smproot/Desktop/unzip/CrayonPhysics/v104/Classes/crayon/src/ceng/gameutils/killspriteslowly/killspriteslowly.cpp
/Users/smproot/Desktop/unzip/CrayonPhysics/v104/Classes/crayon/src/ceng/tasks/task/sdl/mixer/ctaskaudiosdlmixer.cpp

Wall Times
/Users/fred/_WORK/ZDNDRP/WallTimes/main.m
/Users/fred/_WORK/ZDNDRP/WallTimes/Classes/SystemCategories.m

Jumbo Calculator
/Users/Christopher/Documents/Development/JumboCalculator 1.0.3/main.m
/Users/Christopher/Documents/Development/JumboCalculator 1.0.3/Classes/CalculatorFaceViewController.m

c++ xcode symbols ios

8
推荐指数
3
解决办法
2613
查看次数

减少GCC目标EXE代码大小?

当我编写一个无操作程序时:

int main(void)
{
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

与各种编译器:

  • GCC(与LLVM类似的结果):提供10-KiB可执行文件(编译-s)

    • 部分:.CRT,.bss,.data,.idata,.rdata,.text,.tls

    • 取决于msvcrt.dllkernel32.dll

  • MSVC 2010:获得5.5 KiB可执行文件(编译/MD /Ox)

    • 部分:.data,.rdata,.reloc,.text

    • 取决于msvcr100.dllkernel32.dll

    • 本来通过合并进一步减少.rdata.text

  • Windows驱动程序工具包7.1:提供6.5 KiB可执行文件(编译/MD /Ox,链接msvcrt_winxp.obj以允许它在XP上运行)

    • 部分:.data,.rdata,.text

    • 取决于msvcrt.dllkernel32.dll

    • 本来通过合并进一步减少.rdata.text

  • Windows 2003驱动程序开发工具包:提供3.5 KiB可执行文件

    • 部分:.data,.rdata, …

size executable gcc llvm

5
推荐指数
1
解决办法
2604
查看次数

C++中的类似函数是Python的strip()?

Python中有一个非常有用的函数叫做strip().C++中有类似的吗?

c++ string strip

3
推荐指数
2
解决办法
4702
查看次数

标签 统计

c++ ×2

gcc ×2

strip ×2

symbols ×2

executable ×1

ios ×1

llvm ×1

size ×1

string ×1

xcode ×1