нераспознанная опция командной строки при компиляции boost для android на cygwin - PullRequest
5 голосов
/ 26 ноября 2011

Я пытаюсь скомпилировать надстройку на Cygwin с помощью по следующей статье

Но когда я выполнил следующую инструкцию

bjam --without-python --without-serialization toolset=gcc-android4.4.3 link=static runtime-link=static target-os=linux --stagedir=android

Запустилась компиляция, но не удалось из-заследующая ошибка:

cc1plus.exe: error: unrecognized command line option "-mthreads"

Я использую последний Cygwin и Boost 1.48.0

Буду признателен, если кто-нибудь может дать мне подсказку, чтобы удалить эту ошибку.

Обновление:

Я нашел решение.Boost предположил, что у cygwin есть компилятор MingW gcc, поэтому он добавил эту специальную опцию в конфигурационный файл "gcc.jam". После того, как я удалил опцию, он запустился OK.

1 Ответ

1 голос
/ 07 марта 2017

Short

Пропуск target-os=android до b2

Объяснение

Я столкнулся с той же проблемой для Boost 1.59

Согласно boost/tools/build/src/tools/gcc.jam строка 1024

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 ;
        }

        if $(option)
        {
            OPTIONS on $(targets) += $(option) ;
        }
        if $(libs)
        {
            FINDLIBS-SA on $(targets) += $(libs) ;
        }
    }
}

Как видите, -mthreads зависит от target-os param

...