-
Xmake Versionv2.6.4+202203070649 Operating System Version and ArchitecturemacOS 12.2.1 Describe Bug即使我添加了 Expected Behavior或提供一种选项将标准库静态链接到 target 中 Project ConfigurationNo response Additional Information and Error logs
|
Beta Was this translation helpful? Give feedback.
Replies: 8 comments 14 replies
-
xmake -vD 看下完整链接命令,如果已经有了 -static-libstdc++ ,那就跟 xmake 没关系,是 linker 的问题 |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
加的和看的 都完全不对。。 截图里面,只有编译 .o 和 生成 .a 的命令。。编译走 cxflags/cxxflags,.a 走 arflags , 可执行程序走 ldflags ,动态库走 shflags 截图里完全没看到链接命令,另外 -lstdc++ 怎么加到 cxxflags 里面去了。。 |
Beta Was this translation helpful? Give feedback.
-
谨慎起见我重新运行了以下命令... $ xmake clean
$ xmake -vD 这是我的配置: add_requires("zlib-ng", "jsoncpp")
add_requires("boost", {
optional = true,
configs = {
regex = true,
system = true,
thread = true,
iostreams = true,
program_options = true
}
})
-- Enable built-in optimizations for different modes
-- https://xmake.io/#/manual/custom_rule?id=built-in-rules
add_rules("mode.debug", "mode.release")
set_kind("static")
set_languages("gnuxx17")
set_targetdir("../prebuilt/redex/$(plat)/$(arch)")
target("redex")
add_ldflags("-static-libgcc -static-libstdc++", {force = true})
add_packages("boost", "zlib-ng", "jsoncpp")
add_includedirs(...)
add_files(...) 结果: [ 87%]: compiling.debug wrapper/wrapper.cpp
"/usr/bin/xcrun -sdk macosx clang" -c -Qunused-arguments -arch x86_64 -mmacosx-version-min=12.2 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk -lstdc++ -g -O0 -std=gnu++17 -Ianalysis -Ilibredex -Iliblocator -Ilibresource -Iopt/regalloc -Iopt/regalloc-fast -Iservice/regalloc -Iservice/regalloc-fast -Iservice/dataflow -Iutil -Ishared -Isparta/include -Iwrapper -isystem /usr/local/Cellar/boost/1.78.0/include -isystem /Users/rin/.xmake/packages/z/zlib-ng/2.0.5/1731bcf1d2534bca90a9ac8ac3e3e339/include -isystem /Users/rin/.xmake/packages/j/jsoncpp/1.9.5/ec3aae75f8a54056b29f6a537048c365/include -o build/.objs/redex/macosx/x86_64/debug/wrapper/wrapper.cpp.o wrapper/wrapper.cpp
[ 98%]: archiving.debug libredex.a
"/usr/bin/xcrun -sdk macosx ar" -cr ../prebuilt/redex/macosx/x86_64/libredex.a build/.objs/redex/macosx/x86_64/debug/analysis/max-depth/MaxDepthAnalysis.cpp.o build/.objs/redex/macosx/x86_64/debug/analysis/ip-reflection-analysis/IPReflectionAnalysis.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/FrameworkApi.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/MatchFlowDetail.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/ProguardMap.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/ApiLevelChecker.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/IRAssembler.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/MethodSimilarityOrderer.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/DexHasher.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/DexStoreUtil.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/ProguardMatcher.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/VirtualScope.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/GraphVisualizer.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/ABExperimentContextImpl.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/MatchFlow.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/TypeUtil.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/ProguardParser.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/ProguardReporting.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/AggregateException.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/RedexResources.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/DexClass.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/FrequentlyUsedPointersCache.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/DuplicateClasses.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/KeepReason.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/MethodOverrideGraph.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/Pass.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/WorkQueue.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/DexTypeEnvironment.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/IRMetaIO.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/IODIMetadata.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/IROpcode.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/ClassHierarchy.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/DexStore.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/GlobalConfig.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/DexAnnotation.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/DexPosition.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/AnnoUtils.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/Reachability.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/BundleResources.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/RedexException.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/ABExperimentContext.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/RedexOptions.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/MethodProfiles.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/DexUtil.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/AnalysisUsage.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/DexAssessments.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/DexOutput.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/Timer.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/DexMethodHandle.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/Trace.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/ProguardRegex.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/Vinfo.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/PassRegistry.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/UnknownVirtuals.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/Match.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/IRInstruction.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/InteractiveDebugging.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/RedexContext.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/DexInstruction.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/TypeInference.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/ProguardLineRange.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/BigBlocks.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/Configurable.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/PostLowering.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/ProguardPrintConfiguration.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/InlinerConfig.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/DexOpcode.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/DexStats.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/PrintSeeds.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/Native.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/ConfigFiles.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/DexCallSite.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/CFGMutation.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/Show.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/Transform.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/NoOptimizationsMatcher.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/MonitorCount.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/ScopedMetrics.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/PointsToSemanticsUtils.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/DexDebugInstruction.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/ClassUtil.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/AssetManager.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/DexMemberRefs.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/IRCode.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/Debug.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/CallGraph.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/SourceBlockConsistencyCheck.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/HierarchyUtil.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/Mutators.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/ProguardConfiguration.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/NativeNames.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/Resolver.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/Purity.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/EditableCfgAdapter.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/ProguardLexer.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/IRList.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/OptData.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/MethodUtil.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/ReflectionAnalysis.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/ControlFlow.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/PluginRegistry.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/InitCollisionFinder.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/Warning.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/IRTypeChecker.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/RefChecker.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/SourceBlocks.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/ReachableClasses.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/Creators.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/MethodDevirtualizer.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/PointsToSemantics.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/TypeSystem.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/DexIdx.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/JsonWrapper.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/FbjniMarker.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/InstructionLowering.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/PassManager.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/JavaParserUtil.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/DexAsm.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/DexLoader.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/NullnessDomain.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/RedexMappedFile.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/DexAccess.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/ApkResources.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/JarLoader.cpp.o build/.objs/redex/macosx/x86_64/debug/libredex/ReadMaybeMapped.cpp.o build/.objs/redex/macosx/x86_64/debug/libresource/Serialize.cpp.o build/.objs/redex/macosx/x86_64/debug/libresource/TypeWrappers.cpp.o build/.objs/redex/macosx/x86_64/debug/libresource/VectorImpl.cpp.o build/.objs/redex/macosx/x86_64/debug/libresource/String16.cpp.o build/.objs/redex/macosx/x86_64/debug/libresource/String8.cpp.o build/.objs/redex/macosx/x86_64/debug/libresource/SharedBuffer.cpp.o build/.objs/redex/macosx/x86_64/debug/libresource/FileMap.cpp.o build/.objs/redex/macosx/x86_64/debug/libresource/ResourceTypes.cpp.o build/.objs/redex/macosx/x86_64/debug/libresource/Visitor.cpp.o build/.objs/redex/macosx/x86_64/debug/libresource/Static.cpp.o build/.objs/redex/macosx/x86_64/debug/libresource/Unicode.cpp.o build/.objs/redex/macosx/x86_64/debug/opt/regalloc/RegAlloc.cpp.o build/.objs/redex/macosx/x86_64/debug/opt/regalloc-fast/FastRegAlloc.cpp.o build/.objs/redex/macosx/x86_64/debug/service/regalloc/RegisterType.cpp.o build/.objs/redex/macosx/x86_64/debug/service/regalloc/Split.cpp.o build/.objs/redex/macosx/x86_64/debug/service/regalloc/GraphColoring.cpp.o build/.objs/redex/macosx/x86_64/debug/service/regalloc/RegisterAllocation.cpp.o build/.objs/redex/macosx/x86_64/debug/service/regalloc/Interference.cpp.o build/.objs/redex/macosx/x86_64/debug/service/regalloc/VirtualRegistersFile.cpp.o build/.objs/redex/macosx/x86_64/debug/service/regalloc-fast/LiveInterval.cpp.o build/.objs/redex/macosx/x86_64/debug/service/regalloc-fast/LinearScan.cpp.o build/.objs/redex/macosx/x86_64/debug/service/dataflow/LiveRange.cpp.o build/.objs/redex/macosx/x86_64/debug/service/dataflow/ConstantUses.cpp.o build/.objs/redex/macosx/x86_64/debug/util/CommandProfiling.cpp.o build/.objs/redex/macosx/x86_64/debug/util/JemallocUtil.cpp.o build/.objs/redex/macosx/x86_64/debug/util/Sha1.cpp.o build/.objs/redex/macosx/x86_64/debug/shared/DexDefs.cpp.o build/.objs/redex/macosx/x86_64/debug/shared/DexEncoding.cpp.o build/.objs/redex/macosx/x86_64/debug/shared/file-utils.cpp.o build/.objs/redex/macosx/x86_64/debug/liblocator/locator.cpp.o build/.objs/redex/macosx/x86_64/debug/wrapper/wrapper.cpp.o
[100%]: build ok!
|
Beta Was this translation helpful? Give feedback.
This comment has been minimized.
This comment has been minimized.
-
你就一个静态库,哪来的链接过程,加任何 ldflags 都没用,你压根没有 binary/shared 程序。。 静态库是不会链接的。。仅仅只是一个 .o list 的归档文件而已。。建议你先科普下。 |
Beta Was this translation helpful? Give feedback.
-
噢噢好吧,抱歉,我是 C++ 新手,我还以为即使是库也会被链接...那也就是说静态库是无法包含链接的吗...即使是 add_packages 中的?
我看了一下,add packages 似乎会把包加到静态库中,输出的 .a 文件增大了好多倍,那么 xmake 没有另一种办法把 std 也加到静态库中吗? |
Beta Was this translation helpful? Give feedback.
-
静态库,没链接过程,你加不了 add_packages,add_packages 也是对 可执行程序加 link 。不是给静态库用 |
Beta Was this translation helpful? Give feedback.
静态库,没链接过程,你加不了 add_packages,add_packages 也是对 可执行程序加 link 。不是给静态库用