llvm-ar выдает ошибку «усеченный или неправильно сформированный архив» при использовании emmake, связывающего libavcodec - PullRequest
0 голосов
/ 17 июня 2019

1) Использование emmake make для создания битового кода llvm выдает ошибку от llvm-ar по поводу «усеченного или искаженного архива (оставшийся размер архива слишком мал ..»

Похоже на эту ошибку, архив небольшой, чтобы хранить все файлы? Мне было интересно, как мне исправить эту ошибку, или, точнее, как я буду генерировать битовый код llvm отдельно для библиотек и исходного кода, после чего я смогу связать их в emcc после? Я пытаюсь использовать библиотеки libavcodec и libavformat, хранящиеся в ~ / ffmpeg_build / lib

Код компилируется нормально, используя: g ++ ffmpegTest.cpp pkg-config --cflags --libs libavcodec libavformat С PKG_CONFIG_PATH = "/ home / daviddjh / ffmpeg_build / lib / pkgconfig"

2) Пробовал создавать каждый файл (ffmgTest.cpp ..) отдельно, не упоминая библиотеки в CMakeLists.txt, но получая файл "libavcodec / avcodec.h" не найден ".

3) Вот мой ffmpegTest.cpp:

#ifdef __cplusplus
extern "C" {
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
}
#endif
#include <iostream>

int main(){
        char filename[20] = "sample.mp4";
        AVFormatContext *pFormatContext = avformat_alloc_context();
        avformat_open_input(&pFormatContext, filename, NULL, NULL);
        std::cout << "Format: " << pFormatContext->iformat->long_name << std::endl;
        return 0;
}

и мой CList:

cmake_minimum_required(VERSION 3.5.1)
project(example)
set(CMAKE_EXECUTABLE_SUFFIX ".html")
INCLUDE_DIRECTORIES(/home/daviddjh/ffmpeg_build/include/)
LINK_DIRECTORIES(/home/daviddjh/ffmpeg_build/lib/)
add_executable(ffmpegTest ffmpegTest.cpp)
TARGET_LINK_LIBRARIES(ffmpegTest libavcodec libavformat)

4) Когда я использую emmake make для генерации связанного битового кода LLVM, llvm-ar выдает ошибку:

/home/daviddjh/emsdk/fastcomp/fastcomp/bin/llvm-ar: truncated or malformed archive (remaining size of archive too small for next archive member header at offset 170960388).
Traceback (most recent call last):
  File "/home/daviddjh/emsdk/fastcomp/emscripten/emcc.py", line 3420, in <module>
    sys.exit(run(sys.argv))
  File "/home/daviddjh/emsdk/fastcomp/emscripten/emcc.py", line 1907, in run
    final = shared.Building.link(linker_inputs, DEFAULT_FINAL, force_archive_contents=force_archive_contents, just_calculate=just_calculate)
  File "/home/daviddjh/emsdk/fastcomp/emscripten/tools/shared.py", line 1978, in link
    Building.read_link_inputs([x for x in files if not x.startswith('-')])
  File "/home/daviddjh/emsdk/fastcomp/emscripten/tools/shared.py", line 1757, in read_link_inputs
    object_names_in_archives = pool.map(extract_archive_contents, archive_names)
  File "/usr/lib/python2.7/multiprocessing/pool.py", line 253, in map
    return self.map_async(func, iterable, chunksize).get()
  File "/usr/lib/python2.7/multiprocessing/pool.py", line 572, in get
    raise self._value

Я хотел бы иметь возможность генерировать битовый код из .cpp с использованием библиотек libav *. Затем используйте битовый код для генерации файлов WASM с Emscripten.

...