每当你在Android Studio中遇到链接器错误时,它建议你使用-v来查看调用,但是在哪里放-v命令来获取"详细输出" (according to llvm clang command guide)?
已经尝试过:
externalNativeBuild {
cmake {
cppFlags "-frtti -fexceptions -v"
}
}
就我注意到的那样,输出中的任何内容都没有改变
- stacktrace --debug
在
Settings > Compiler > Command-line Options
这显示了更多输出但不是我想要的东西!
非常感谢您的帮助!
编辑
由于我正在编译C文件,我显然不得不使用cFlags。现在gradle文件看起来如下(thx to @Alex Cohn):
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "25.0.3"
defaultConfig {
applicationId "<my_id>"
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
externalNativeBuild {
cmake {
cFlags "-v"
}
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support.constraint:constraint-layout:1.0.1'
testCompile 'junit:junit:4.12'
}
编辑2
在几个C类中添加以下预处理器命令我没有注意到它们没有它,我能够摆脱关于缺失引用的链接器错误:
#ifdef __cplusplus
extern "C"
{
#endif
// your includes and your code here
#ifdef __cplusplus
}
#endif
答案 0 :(得分:1)
cppFlags "-frtti -fexceptions -v"
与 clang ++ 任务的cppFlags "-frtti", "-fexceptions", "-v"
一样有效,也就是说,为 .cpp 或<获取详细输出strong> .cxx 文件编译。
cFlags "-v"
用于为 .c 文件编译生成详细输出。
要为链接步骤生成详细输出,请修改 CMakeLists.txt 文件,将-v
添加到相关的 target_link_libraries 语句,例如
target_link_libraries(myjnilib android log -v)