Error: PLT offset too large, try linking with --long-plt

Need Help!!! Android il2cpp build error

unity 2018.4.8 is fine. However, i upgrade to unity 2019.2.9f1.It doesn’t work

Failed running F:\Unity2019.2.9f1\Editor\Data\il2cpp/build/il2cpp.exe --convert-to-cpp --emit-null-checks --enable-array-bounds-check --dotnetprofile=“unityaot” --compile-cpp --libil2cpp-static --platform=“Android” --architecture=“ARMv7” --configuration=“Release” --outputpath=“F:\project\xiangmu\AssetsBundleClient\Temp\StagingArea\assets\bin\Data\Native\armeabi-v7a\libil2cpp.so” --cachedirectory=“F:\project\xiangmu\AssetsBundleClient\Assets..\Library\il2cpp_android_armeabi-v7a/il2cpp_cache” --additional-include-directories=“F:/Unity2019.2.9f1/Editor/Data/PlaybackEngines/AndroidPlayer/Tools\bdwgc/include” --additional-include-directories=“F:/Unity2019.2.9f1/Editor/Data/PlaybackEngines/AndroidPlayer/Tools\libil2cpp/include” --tool-chain-path=“F:/android-ndk-r16b” --enable-debugger --profiler-report --map-file-parser=F:/Unity2019.2.9f1/Editor/Data/Tools/MapFileParser/MapFileParser.exe --directory=F:/project/xiangmu/AssetsBundleClient/Temp/StagingArea/assets/bin/Data/Managed --generatedcppdir=F:/project/xiangmu/AssetsBundleClient/Temp/StagingArea/Il2Cpp/il2cppOutput --extra-types-file=F:/project/xiangmu/AssetsBundleClient/Temp/StagingArea/Il2Cpp/extra-types.txt

stdout:
WARNING: Cannot add extra type Unity.Entities.JobForEachExtensions+JobStruct_Process_EC2[Unity.Transforms.CopyInitialTransformFromGameObjectSystem+CopyTransforms,Unity.Transforms.LocalToWorld]. Skipping. WARNING: Cannot add extra type Unity.Entities.JobForEachExtensions+JobStruct_Process_EC2[Unity.Transforms.CopyTransformFromGameObjectSystem+CopyTransforms,Unity.Transforms.LocalToWorld]. Skipping.
WARNING: Cannot add extra type Unity.Entities.FastEquality+CompareImpl1[Unity.Entities.Entity]. Skipping. WARNING: Cannot add extra type Unity.Entities.FastEquality+GetHashCodeImpl1[Unity.Entities.Entity]. Skipping.
WARNING: Cannot add extra type Unity.Entities.FastEquality+CompareImpl1[Unity.Entities.EditorRenderData]. Skipping. WARNING: Cannot add extra type Unity.Entities.FastEquality+GetHashCodeImpl1[Unity.Entities.EditorRenderData]. Skipping.
WARNING: Cannot add extra type Unity.Entities.FastEquality+CompareImpl1[Unity.Entities.EntityGuid]. Skipping. WARNING: Cannot add extra type Unity.Entities.FastEquality+GetHashCodeImpl1[Unity.Entities.EntityGuid]. Skipping.
WARNING: Cannot add extra type Unity.Entities.FastEquality+CompareImpl1[Unity.Entities.SceneTag]. Skipping. WARNING: Cannot add extra type Unity.Entities.FastEquality+GetHashCodeImpl1[Unity.Entities.SceneTag]. Skipping.
WARNING: Cannot add extra type Unity.Entities.FastEquality+CompareImpl1[Unity.Entities.SceneSection]. Skipping. WARNING: Cannot add extra type Unity.Entities.FastEquality+GetHashCodeImpl1[Unity.Entities.SceneSection]. Skipping.
Building libil2cpp.so with AndroidToolChain
Output directory: F:\project\xiangmu\AssetsBundleClient\Temp\StagingArea\assets\bin\Data\Native\armeabi-v7a
Cache directory: F:\project\xiangmu\AssetsBundleClient\Library\il2cpp_android_armeabi-v7a\il2cpp_cache
ObjectFiles: 884 of which compiled: 884
Time Compile: 83312 milliseconds Il2CppAttributes.cpp
Time Compile: 65547 milliseconds Assembly-CSharp-firstpass67.cpp
Time Compile: 56404 milliseconds Assembly-CSharp212.cpp
Time Compile: 44138 milliseconds Il2CppInvokerTable.cpp
Time Compile: 34905 milliseconds Assembly-CSharp214.cpp
Time Compile: 31548 milliseconds Assembly-CSharp_Debugger.c
Time Compile: 30660 milliseconds Assembly-CSharp211.cpp
Time Compile: 27637 milliseconds Assembly-CSharp64.cpp
Time Compile: 27607 milliseconds Assembly-CSharp65.cpp
Time Compile: 22362 milliseconds Assembly-CSharp185.cpp
Total compilation time: 1242110 milliseconds.
il2cpp.exe didn’t catch exception: Unity.IL2CPP.Building.BuilderFailedException: F:\android-ndk-r16b\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++ @“C:\Users\Administrator\AppData\Local\Temp\tmpFBF2.tmp” -o “F:\project\xiangmu\AssetsBundleClient\Library\il2cpp_android_armeabi-v7a\il2cpp_cache\linkresult_AC1EE0E69DEF0C849B63F789737F0694\libil2cpp.so” -shared -Wl,-soname,libil2cpp.so -Wl,–no-undefined -Wl,-z,noexecstack -Wl,–gc-sections -Wl,–build-id --sysroot “F:\android-ndk-r16b\platforms\android-16\arch-arm” -gcc-toolchain “F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64” -target armv7-none-linux-androideabi -Wl,–wrap,sigaction -L “F:\android-ndk-r16b\sources\cxx-stl\gnu-libstdc++\4.9\libs\armeabi-v7a” -lgnustl_static -latomic -llog -rdynamic -fuse-ld=gold.exe

F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin\ld.gold.exe: error: PLT offset too large, try linking with --long-plt
F:\android-ndk-r16b\toolchains\arm-linux-androideabi-4.9

1 Like

Mayby:

You can try this solution by okluskyond.

1 Like

Thank for answer. But i dont know the detailed steps
“Create Shell script/batch file name ld.gold that will take CommandLine arguments and execute ld_original.gold with those arguments + --long-plt”
:(:(:frowning:

Rename ld.gold to ld_original.gold and instead of ld.gold put there executable created from scripts below

new ld.gold

#!/bin/bash
# Absolute path this script is in, thus /home/user/bin
SCRIPTPATH=$(dirname $0)
"$SCRIPTPATH"/ld_original.gold "$@" --long-plt

but ld.gold.exe not a linux shell,how can I do this?

You can set the option using this API:

1 Like

This either does not work for the --long-plt linker flag on Android, or I am using it incorrectly. I have tried the following and get the same “error: PLT offset too large, try linking with --long-plt” errors.

PlayerSettings.SetAdditionalIl2CppArgs("--long-plt");
PlayerSettings.SetAdditionalIl2CppArgs("LOCAL_LDFLAGS=--long-plt");
PlayerSettings.SetAdditionalIl2CppArgs("LOCAL_LDFLAGS=\"--long-plt\"");

you should use:
PlayerSettings.SetAdditionalIl2CppArgs(“–command-log=on --linker-flags='-Wl,–long-plt'”);

Hello !
Anyone could explain where we should use this line please ? it is not mentioned anywhere (not in the doc, not in forums) though it seems kinda important to know what should be calling this line.

Also it’s can be when you build IL2CPP with build option ‘allowDebugging’

Did you ever find out? Or get this particular line to do anything? I wasn’t able to.

We got this working in our own app after adding a new Library.

In our own build pipeline we have a Build.cs file. We added this prior to running
BuildPipeline.BuildPlayer

The suggested line did work for us.

While our Build.cs is more complex here is a short sample

[MenuItem("Build/Android/Build")]
public static void BuildAndroid()
{
            PlayerSettings.SetAdditionalIl2CppArgs("--command-log=on --linker-flags=\'-Wl,--long-plt\'");
            PlayerSettings.SetIl2CppCompilerConfiguration(BuildTargetGroup.Android, Il2CppCompilerConfiguration.Debug);
}

We did notice that this will update the Player Settings. You could instead use a Menu Item that just Sets or Updates the additional arguments rather than running it prior to every build.

1 Like

Having same issue. Originally, we had the error

arm-linux-androideabi/bin/ld.gold: error: PLT offset too large, try linking with --long-plt

When we use Unity’s suggested workaround (Unity Issue Tracker - [Android] [IL2CPP] Flag --long-plt is missing when building a release build (Error: PLT offset too large, try with --long-plt)) of PlayerSettings.SetAdditionalIl2CppArgs("--command-log=on --linker-flags=\"-Wl,--long-plt\"");

We started getting aarch64-linux-android/bin/ld.bfd: unrecognized option '--long-plt'

This happens when building Android on Unity Cloud Build

(Hi Pete)