zoukankan      html  css  js  c++  java
  • Building Boost for Android with error “cannot find -lrt”

    编辑tools/build/src/tools/gcc.jam

    rule setup-threading ( targets * : sources * : properties * )
    {
    local threading = [ feature.get-values threading : $(properties) ] ;
    if $(threading) = multi
    {
    local target = [ feature.get-values target-os : $(properties) ] ;
    local option ;
    local libs ;

    switch $(target)
    {
    case android : # No threading options, everything is in already.
    case windows : option = -mthreads ;
    case cygwin : option = -mthreads ;
    case solaris : option = -pthreads ; libs = rt ;
    case beos : # No threading options.
    case haiku : option = ;
    case *bsd : option = -pthread ; # There is no -lrt on BSD.
    case sgi : # gcc on IRIX does not support multi-threading.
    case darwin : # No threading options.
    case * : option = -pthread ; #libs = rt ;
    }

    将libs = rt这行注释掉

    ------------------------------------------------------------------

    Indeed all occurrencies of -lrt with sed doesn't seem to have any impact on the problem.
    What worked for me (in boost 1.53.0 though) is the following:

    Edit tools/build/v2/tools/gcc.jam

    Comment libs = rt ; in this code section (By the way, it could be that you do not have the -pthread option line):

    case * :
    {
    option = -pthread ;
    libs = rt ; <--Comment this line
    }

    Note: As initial/brute force solution, I would take the failed commands and manually run them removing -lrt from them.

    question:

    So I am trying to build boost 1.55 for android, but I am getting linking errors for Boost.System and Boost.Atomic, that say "error: cannot find -lrt". Of course, android doesn't have librt because its built into the C runtime. So, I am trying to get boost so it won't link to librt. I tried just deleting every "-lrt" in the source code:

    find . -type f | xargs -n1 -P 8 sed -i "s/-lrt//g"

    But I still get the same error. How do I make boost not link against librt for android?

    answer:

    Indeed all occurrencies of -lrt with sed doesn't seem to have any impact on the problem.
    What worked for me (in boost 1.53.0 though) is the following:

    Edit tools/build/v2/tools/gcc.jam

    Comment libs = rt ; in this code section (By the way, it could be that you do not have the -pthread option line):

    case * :
    {
    option = -pthread ;
    libs = rt ; <--Comment this line
    }

    Note: As initial/brute force solution, I would take the failed commands and manually run them removing -lrt from them.

  • 相关阅读:
    8月面试题目收录
    html5读取本地文件,图片预览
    Identity Server4资料
    vue与Element实际应用参考
    webpack与vue环境搭建(转载)
    .NET使用Bogus生成大量随机数据(转载)
    Docker笔记:常用服务安装——Nginx、MySql、Redis(转载)
    RabbitMQ操作代码封装
    RSA加密与解密
    .NET CORE编写控制台程序应有的优雅姿势(转载)
  • 原文地址:https://www.cnblogs.com/yuanxiaoping_21cn_com/p/6820322.html
Copyright © 2011-2022 走看看