Как использовать 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, но всегда выдает ошибку и это не то же самое. Пожалуйста, помогите мне.