Boost-1.53.0 在ubuntu下编译出现./boost/atomic/atomic.hpp:166:16: error: ‘uintptr_t’ was not declared错误

4 篇文章 0 订阅
4 篇文章 0 订阅

在linux环境下编译出现如下错误:

gcc.compile.c++ bin.v2/libs/atomic/build/gcc-4.8/release/link-static/threading-multi/lockpool.o
In file included from ./boost/atomic.hpp:12:0,
                 from libs/atomic/src/lockpool.cpp:1:
./boost/atomic/atomic.hpp:166:16: error: ‘uintptr_t’ was not declared in this scope
 typedef atomic<uintptr_t> atomic_uintptr_t;
                ^
./boost/atomic/atomic.hpp:166:25: error: template argument 1 is invalid
 typedef atomic<uintptr_t> atomic_uintptr_t;
                         ^
./boost/atomic/atomic.hpp:166:43: error: invalid type in declaration before ‘;’ token
 typedef atomic<uintptr_t> atomic_uintptr_t;
                                           ^

    "g++"  -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -pthread  -DBOOST_ALL_NO_LIB=1 -DBOOST_ATOMIC_SOURCE -DNDEBUG  -I"." -c -o "bin.v2/libs/atomic/build/gcc-4.8/release/link-static/threading-multi/lockpool.o" "libs/atomic/src/lockpool.cpp"

...failed gcc.compile.c++ bin.v2/libs/atomic/build/gcc-4.8/release/link-static/threading-multi/lockpool.o...
...skipped <pbin.v2/libs/atomic/build/gcc-4.8/release/link-static/threading-multi>libboost_atomic.a(clean) for lack of <pbin.v2/libs/atomic/build/gcc-4.8/release/link-static/threading-multi>lockpool.o...
...skipped <pbin.v2/libs/atomic/build/gcc-4.8/release/link-static/threading-multi>libboost_atomic.a for lack of <pbin.v2/libs/atomic/build/gcc-4.8/release/link-static/threading-multi>lockpool.o...
...skipped <p../install/lib>libboost_atomic.a for lack of <pbin.v2/libs/atomic/build/gcc-4.8/release/link-static/threading-multi>libboost_atomic.a...

********************************************************分割线****************************************************************

参考链接地址:https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=739904

简单修改描述:

vi ./boost_1_53_0/boost/cstdint.hpp +43

将#if defined(BOOST_HAS_STDINT_H) && (!defined(__GLIBC__) || defined(__GLIBC_HAVE_LONG_LONG))替换为

#if defined(BOOST_HAS_STDINT_H)                                 \
                   && (!defined(__GLIBC__)                                       \
                       || defined(__GLIBC_HAVE_LONG_LONG)                        \
                       || (defined(__GLIBC__) && ((__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 17)))))

再次编译boost库就可以。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
非常抱歉,我的失误。实际上,`Assets/Plugins/Android/libs/arm64-v8a/libil2cpp.so`是一个假路径,需要根据实际情况进行替换。在Unity工程中,`libil2cpp.so`文件的实际路径由以下两个因素决定: 1. 在Unity中,需要将工程选择为IL2CPP脚本后端,才能生成`libil2cpp.so`文件。在菜单栏中选择`Edit` -> `Project Settings` -> `Player`,然后在`Other Settings`中选择`Scripting Backend`为`IL2CPP`即可。 2. 在工程目录下,`libil2cpp.so`文件实际上是在`/Library/ScriptAssemblies`目录下生成的。因此,正确的路径应该是`/Library/ScriptAssemblies/libil2cpp.so`。如果你的工程中有多个CPU架构需要支持,`libil2cpp.so`文件可能会分别拷贝到不同的文件夹下,如`/Library/ScriptAssemblies/arm64-v8a/libil2cpp.so`、`/Library/ScriptAssemblies/armeabi-v7a/libil2cpp.so`等。在脚本中需要根据实际情况进行替换。 以下是修改后的脚本代码: ```csharp using UnityEditor; using UnityEditor.Android; public static class MyBuildScript { [MenuItem("Build/Build Android")] public static void BuildAndroid() { // 设置 APK 导出路径 string apkPath = "Build/MyGame.apk"; // 生成 Android 工程 string error = BuildPipeline.BuildPlayer(new string[] {"Assets/Main.unity"}, apkPath, BuildTarget.Android, BuildOptions.None); if (!string.IsNullOrEmpty(error)) { Debug.LogError(error); return; } // 导出 libil2cpp.so 文件 string il2cppPath = "/Library/ScriptAssemblies/libil2cpp.so"; // 根据实际情况进行修改 string destPath = "Build/MyGame/libs/arm64-v8a/libil2cpp.so"; // 根据实际情况进行修改 FileUtil.CopyFileOrDirectory(il2cppPath, destPath); // 打开 APK 导出目录 EditorUtility.RevealInFinder(apkPath); } } ``` 希望这次能为您解答问题,如果还有其他问题,请随问我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值