Как использовать emsdk/emscripten для сборки C++ и ссылки/включения gmp?

Ошибка Wasm-ld: неизвестный тип файла: libgmp.a Wasm-ld: ошибка: неопределенный символ: __gmpz_clear

Я хочу построить в Wasm. Можете ли вы сказать мне правильные шаги?

Ошибка Wasm-ld: неизвестный тип файла: libgmp.a Wasm-ld: ошибка: неопределенный символ: __gmpz_clear

Я хочу построить https://github.com/Iwctwbh/Factorial-BenchMarkhttps://github.com/Iwctwbh/Factorial-BenchMark в Wasm. Можете ли вы сказать мне правильные шаги?

Ниже приведены мои шаги

GMP

      ./configure
make
make check
make install

Затем я получаю .lib/libgmp.a

main.cpp

      #include <iostream>
#include <gmpxx.h>

int fibonacci(int n) {
    if (n <= 0) return 0;
    if (n == 1) return 1;
    return fibonacci(n - 1) + fibonacci(n - 2);
}

int main() {
    mpz_class result = 1;
    int n = 10;
    std::cout << "Fibonacci(" << n << ") = " << fibonacci(n) << std::endl;
    return 0;
}

CMakeLists.txt

      cmake_minimum_required(VERSION 3.10)
project(FibonacciProject)

# Enable Emscripten
set(CMAKE_TOOLCHAIN_FILE D:\\emsdk\\emsdk\\upstream\\emscripten\\cmake\\Modules\\Platform\\Emscripten.cmake)

# Set the output format to WebAssembly (wasm)
set(CMAKE_EXECUTABLE_SUFFIX ".html")

# Add the source file to the project
add_executable(FibonacciProject main.cpp)

add_library(gmp STATIC IMPORTED)
set_target_properties(gmp PROPERTIES IMPORTED_LOCATION D://gmp//.libs//libgmp.a)
target_include_directories(FibonacciProject PRIVATE D:\\gmp)
target_link_libraries(FibonacciProject gmp)

Затем я пробую emcmake cmake .. emmake make

Я пробовал это в Windows11/Linux/Docker, но всегда выдает ошибку и это не то же самое. Пожалуйста, помогите мне.

0 ответов

Другие вопросы по тегам