MCPI-Revival / jMCPIL

MCPIL Rewrite In Java
MIT License
9 stars 3 forks source link

Compile for other architectures #6

Open IsaacMvmv opened 3 years ago

IsaacMvmv commented 3 years ago

I dont know about c Im a noob programmer Just i'm asking

I want to compile for x86_64 architecture for no reason( just want to run with my pc mcpi ...) and first: cmake Of course it had to give errors so I modified CMakeLists.txt to NoT run arm toolchain in cmake/building

Output:

-- The C compiler identification is Clang 12.0.1
-- The CXX compiler identification is Clang 12.0.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/clang - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/clang++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Deprecation Warning at build/_deps/zlib-src/CMakeLists.txt:1 (cmake_minimum_required):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.

-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of off64_t
-- Check size of off64_t - done
-- Looking for fseeko
-- Looking for fseeko - found
-- Looking for unistd.h
-- Looking for unistd.h - found
-- Renaming
--    ./_deps/zlib-src/zconf.h
-- to 'zconf.h.included' because this file is included with zlib
-- but CMake generates it automatically in the build directory.
CMake Deprecation Warning at build/_deps/libpng-src/CMakeLists.txt:1 (cmake_minimum_required):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.

CMake Deprecation Warning at build/_deps/libpng-src/CMakeLists.txt:1 (cmake_minimum_required):
  The OLD behavior for policy CMP0054 will be removed from a future version
  of CMake.

  The cmake-policies(7) manual explains that the OLD behaviors of all
  policies are deprecated and that a policy should be set to OLD only under
  specific short-term circumstances.  Projects should be ported to the NEW
  behavior and not rely on setting a policy to OLD.

-- Found ZLIB: zlib
-- Configuring done
-- Generating done
-- Build files have been written to: . :D

I have renamed $PWD to . to... protect? idk like protecting some useless

next: make

Seems like it is solved, true?

NO

make -j16 (yes, let me change pc by small beast)

Output:

❯ make -j16
[  1%] Building C object launcher/CMakeFiles/launcher.dir/src/bootstrap.c.o
[  2%] Building CXX object launcher/CMakeFiles/launcher.dir/src/client/launcher.cpp.o
[  2%] Building C object media-layer/stubs/CMakeFiles/GLESv1_CM.dir/src/GLESv1_CM.c.o
[  2%] Building C object media-layer/stubs/CMakeFiles/bcm_host.dir/src/bcm_host.c.o
[  3%] Building CXX object launcher/CMakeFiles/launcher.dir/src/ldconfig.cpp.o
[  3%] Building C object mods/CMakeFiles/readdir.dir/src/readdir/readdir.c.o
[  3%] Building C object media-layer/stubs/CMakeFiles/EGL.dir/src/EGL.c.o
[  4%] Building C object _deps/zlib-build/CMakeFiles/zlibstatic.dir/compress.o
[  4%] Building C object _deps/zlib-build/CMakeFiles/zlibstatic.dir/adler32.o
[  5%] Building C object _deps/zlib-build/CMakeFiles/zlibstatic.dir/gzclose.o
[  6%] Building C object libreborn/CMakeFiles/reborn.dir/src/reborn.c.o
[  6%] Building C object media-layer/stubs/CMakeFiles/X11.dir/src/X11.c.o
[  8%] Building C object _deps/libpng-build/CMakeFiles/png12_static.dir/png.o
[  8%] Building C object _deps/zlib-build/CMakeFiles/zlib.dir/adler32.o
[ 10%] Building C object _deps/zlib-build/CMakeFiles/zlibstatic.dir/crc32.o
[ 10%] Building C object _deps/zlib-build/CMakeFiles/zlibstatic.dir/deflate.o
[ 11%] Linking C shared library libbcm_host.so
/home/isaac/clones/minecraft-pi-reborn/libreborn/src/reborn.c:13:2: error: "Patching Code Is ARM Only"
#error "Patching Code Is ARM Only"
 ^
/home/isaac/clones/minecraft-pi-reborn/libreborn/src/reborn.c:28:22: error: cast to smaller integer type 'int32_t' (aka 'int') from 'void *' [-Werror,-Wvoid-pointer-to-int-cast]
    int32_t offset = (int32_t) to - (int32_t) pc;
                     ^~~~~~~~~~~~
/home/isaac/clones/minecraft-pi-reborn/libreborn/src/reborn.c:28:37: error: cast to smaller integer type 'int32_t' (aka 'int') from 'unsigned char *' [-Werror,-Wpointer-to-int-cast]
    int32_t offset = (int32_t) to - (int32_t) pc;
                                    ^~~~~~~~~~~~
/home/isaac/clones/minecraft-pi-reborn/libreborn/src/reborn.c:127:72: error: cast to smaller integer type 'uint32_t' (aka 'unsigned int') from 'void *' [-Werror,-Wvoid-pointer-to-int-cast]
        ERR("(%s:%i) Unable To Find Callsites For 0x%08x", file, line, (uint32_t) start);
                                                                       ^~~~~~~~~~~~~~~~
/home/isaac/clones/minecraft-pi-reborn/libreborn/include/libreborn/log.h:9:96: note: expanded from macro 'ERR'
#define ERR(format, ...) { fprintf(stderr, "[ERR]: (%s:%i): " format "\n", __FILE__, __LINE__, __VA_ARGS__); exit(EXIT_FAILURE); }
                                                                                               ^~~~~~~~~~~
/home/isaac/clones/minecraft-pi-reborn/libreborn/src/reborn.c:149:10: error: cast to smaller integer type 'uint32_t' (aka 'unsigned int') from 'void *' [-Werror,-Wvoid-pointer-to-int-cast]
    if (((uint32_t) start) % 4 != 0) {
         ^~~~~~~~~~~~~~~~
/home/isaac/clones/minecraft-pi-reborn/libreborn/src/reborn.c:171:5: error: implicit declaration of function '__clear_cache' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
    __clear_cache(start, (void *) end);
    ^
/home/isaac/clones/minecraft-pi-reborn/libreborn/src/reborn.c:176:21: error: cast to smaller integer type 'uint32_t' (aka 'unsigned int') from 'void *' [-Werror,-Wvoid-pointer-to-int-cast]
    uint32_t addr = (uint32_t) target;
                    ^~~~~~~~~~~~~~~~~
7 errors generated.
make[2]: *** [libreborn/CMakeFiles/reborn.dir/build.make:76: libreborn/CMakeFiles/reborn.dir/src/reborn.c.o] Error 1
[ 11%] Linking C shared library libreaddir.so
make[1]: *** [CMakeFiles/Makefile2:617: libreborn/CMakeFiles/reborn.dir/all] Error 2
make[1]: *** Se espera a que terminen otras tareas....
[ 12%] Linking C shared library libGLESv1_CM.so
[ 12%] Building C object _deps/libpng-build/CMakeFiles/png12_static.dir/pngerror.o
[ 13%] Linking C shared library libEGL.so
[ 13%] Linking C shared library libX11.so
[ 13%] Built target bcm_host
[ 14%] Building C object _deps/zlib-build/CMakeFiles/zlibstatic.dir/gzlib.o
[ 15%] Building C object _deps/zlib-build/CMakeFiles/zlibstatic.dir/gzread.o
[ 16%] Building C object _deps/libpng-build/CMakeFiles/png12_static.dir/pngget.o
[ 16%] Built target readdir
[ 17%] Building C object _deps/libpng-build/CMakeFiles/png12_static.dir/pngmem.o
[ 17%] Building C object _deps/libpng-build/CMakeFiles/png12_static.dir/pngpread.o
[ 17%] Built target GLESv1_CM
[ 17%] Building C object _deps/zlib-build/CMakeFiles/zlibstatic.dir/gzwrite.o
[ 18%] Building C object _deps/zlib-build/CMakeFiles/zlib.dir/compress.o
[ 18%] Building C object _deps/zlib-build/CMakeFiles/zlib.dir/crc32.o
[ 18%] Built target X11
[ 18%] Built target EGL
[ 19%] Building C object _deps/zlib-build/CMakeFiles/zlibstatic.dir/inflate.o
[ 20%] Building C object _deps/zlib-build/CMakeFiles/zlibstatic.dir/infback.o
[ 20%] Building C object _deps/zlib-build/CMakeFiles/zlibstatic.dir/inftrees.o
[ 21%] Building C object _deps/libpng-build/CMakeFiles/png12_static.dir/pngread.o
[ 22%] Building C object _deps/zlib-build/CMakeFiles/zlib.dir/deflate.o
[ 23%] Building C object _deps/zlib-build/CMakeFiles/zlib.dir/gzclose.o
[ 24%] Building C object _deps/libpng-build/CMakeFiles/png12_static.dir/pngrio.o
[ 25%] Building C object _deps/zlib-build/CMakeFiles/zlibstatic.dir/inffast.o
[ 26%] Building C object _deps/zlib-build/CMakeFiles/zlibstatic.dir/trees.o
[ 26%] Building C object _deps/zlib-build/CMakeFiles/zlibstatic.dir/uncompr.o
[ 27%] Building C object _deps/zlib-build/CMakeFiles/zlibstatic.dir/zutil.o
[ 27%] Building C object _deps/zlib-build/CMakeFiles/zlib.dir/gzlib.o
[ 28%] Building C object _deps/zlib-build/CMakeFiles/zlib.dir/gzread.o
[ 29%] Building C object _deps/zlib-build/CMakeFiles/zlib.dir/gzwrite.o
[ 29%] Building C object _deps/libpng-build/CMakeFiles/png12_static.dir/pngrtran.o
[ 30%] Building C object _deps/libpng-build/CMakeFiles/png12_static.dir/pngrutil.o
[ 31%] Building C object _deps/libpng-build/CMakeFiles/png12_static.dir/pngset.o
[ 31%] Building C object _deps/libpng-build/CMakeFiles/png12_static.dir/pngtrans.o
[ 32%] Building C object _deps/libpng-build/CMakeFiles/png12_static.dir/pngwio.o
[ 32%] Building C object _deps/zlib-build/CMakeFiles/zlib.dir/inflate.o
[ 33%] Building C object _deps/libpng-build/CMakeFiles/png12_static.dir/pngwrite.o
[ 33%] Building C object _deps/libpng-build/CMakeFiles/png12_static.dir/pngwtran.o
[ 34%] Building C object _deps/zlib-build/CMakeFiles/zlib.dir/infback.o
[ 35%] Building C object _deps/zlib-build/CMakeFiles/zlib.dir/inftrees.o
[ 36%] Building C object _deps/libpng-build/CMakeFiles/png12_static.dir/pngwutil.o
[ 36%] Building C object _deps/zlib-build/CMakeFiles/zlib.dir/inffast.o
[ 37%] Building C object _deps/zlib-build/CMakeFiles/zlib.dir/trees.o
[ 38%] Building C object _deps/zlib-build/CMakeFiles/zlib.dir/uncompr.o
[ 38%] Building C object _deps/zlib-build/CMakeFiles/zlib.dir/zutil.o
[ 39%] Linking C static library libz.a
[ 39%] Built target zlibstatic
[ 40%] Linking C shared library libz.so
[ 41%] Linking CXX executable launcher
[ 41%] Built target zlib
[ 41%] Built target launcher
[ 42%] Linking C static library libpng12.a
[ 42%] Built target png12_static
make: *** [Makefile:136: all] Error 2

now only make to make output "clean"

output:

❯ make
Consolidate compiler generated dependencies of target zlib
[ 11%] Built target zlib
[ 12%] Building C object _deps/zlib-build/CMakeFiles/example64.dir/test/example.o
[ 12%] Linking C executable example64
[ 12%] Built target example64
[ 13%] Building C object _deps/zlib-build/CMakeFiles/minigzip.dir/test/minigzip.o
[ 13%] Linking C executable minigzip
[ 13%] Built target minigzip
[ 13%] Building C object _deps/zlib-build/CMakeFiles/example.dir/test/example.o
[ 14%] Linking C executable example
[ 14%] Built target example
Consolidate compiler generated dependencies of target zlibstatic
[ 25%] Built target zlibstatic
[ 26%] Building C object _deps/zlib-build/CMakeFiles/minigzip64.dir/test/minigzip.o
[ 27%] Linking C executable minigzip64
[ 27%] Built target minigzip64
[ 27%] Building C object _deps/libpng-build/CMakeFiles/png12.dir/png.o
[ 28%] Building C object _deps/libpng-build/CMakeFiles/png12.dir/pngerror.o
[ 29%] Building C object _deps/libpng-build/CMakeFiles/png12.dir/pngget.o
[ 29%] Building C object _deps/libpng-build/CMakeFiles/png12.dir/pngmem.o
[ 30%] Building C object _deps/libpng-build/CMakeFiles/png12.dir/pngpread.o
[ 31%] Building C object _deps/libpng-build/CMakeFiles/png12.dir/pngread.o
[ 31%] Building C object _deps/libpng-build/CMakeFiles/png12.dir/pngrio.o
[ 32%] Building C object _deps/libpng-build/CMakeFiles/png12.dir/pngrtran.o
[ 32%] Building C object _deps/libpng-build/CMakeFiles/png12.dir/pngrutil.o
[ 33%] Building C object _deps/libpng-build/CMakeFiles/png12.dir/pngset.o
[ 34%] Building C object _deps/libpng-build/CMakeFiles/png12.dir/pngtrans.o
[ 34%] Building C object _deps/libpng-build/CMakeFiles/png12.dir/pngwio.o
[ 35%] Building C object _deps/libpng-build/CMakeFiles/png12.dir/pngwrite.o
[ 36%] Building C object _deps/libpng-build/CMakeFiles/png12.dir/pngwtran.o
[ 36%] Building C object _deps/libpng-build/CMakeFiles/png12.dir/pngwutil.o
[ 37%] Linking C shared library libpng12.so
[ 37%] Built target png12
[ 37%] Building C object _deps/libpng-build/CMakeFiles/pngtest.dir/pngtest.o
[ 38%] Linking C executable pngtest
[ 38%] Built target pngtest
Consolidate compiler generated dependencies of target png12_static
[ 49%] Built target png12_static
Consolidate compiler generated dependencies of target reborn
[ 50%] Building C object libreborn/CMakeFiles/reborn.dir/src/reborn.c.o
/home/isaac/clones/minecraft-pi-reborn/libreborn/src/reborn.c:13:2: error: "Patching Code Is ARM Only"
#error "Patching Code Is ARM Only"
 ^
/home/isaac/clones/minecraft-pi-reborn/libreborn/src/reborn.c:28:22: error: cast to smaller integer type 'int32_t' (aka 'int') from 'void *' [-Werror,-Wvoid-pointer-to-int-cast]
    int32_t offset = (int32_t) to - (int32_t) pc;
                     ^~~~~~~~~~~~
/home/isaac/clones/minecraft-pi-reborn/libreborn/src/reborn.c:28:37: error: cast to smaller integer type 'int32_t' (aka 'int') from 'unsigned char *' [-Werror,-Wpointer-to-int-cast]
    int32_t offset = (int32_t) to - (int32_t) pc;
                                    ^~~~~~~~~~~~
/home/isaac/clones/minecraft-pi-reborn/libreborn/src/reborn.c:127:72: error: cast to smaller integer type 'uint32_t' (aka 'unsigned int') from 'void *' [-Werror,-Wvoid-pointer-to-int-cast]
        ERR("(%s:%i) Unable To Find Callsites For 0x%08x", file, line, (uint32_t) start);
                                                                       ^~~~~~~~~~~~~~~~
/home/isaac/clones/minecraft-pi-reborn/libreborn/include/libreborn/log.h:9:96: note: expanded from macro 'ERR'
#define ERR(format, ...) { fprintf(stderr, "[ERR]: (%s:%i): " format "\n", __FILE__, __LINE__, __VA_ARGS__); exit(EXIT_FAILURE); }
                                                                                               ^~~~~~~~~~~
/home/isaac/clones/minecraft-pi-reborn/libreborn/src/reborn.c:149:10: error: cast to smaller integer type 'uint32_t' (aka 'unsigned int') from 'void *' [-Werror,-Wvoid-pointer-to-int-cast]
    if (((uint32_t) start) % 4 != 0) {
         ^~~~~~~~~~~~~~~~
/home/isaac/clones/minecraft-pi-reborn/libreborn/src/reborn.c:171:5: error: implicit declaration of function '__clear_cache' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
    __clear_cache(start, (void *) end);
    ^
/home/isaac/clones/minecraft-pi-reborn/libreborn/src/reborn.c:176:21: error: cast to smaller integer type 'uint32_t' (aka 'unsigned int') from 'void *' [-Werror,-Wvoid-pointer-to-int-cast]
    uint32_t addr = (uint32_t) target;
                    ^~~~~~~~~~~~~~~~~
7 errors generated.
make[2]: *** [libreborn/CMakeFiles/reborn.dir/build.make:76: libreborn/CMakeFiles/reborn.dir/src/reborn.c.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:617: libreborn/CMakeFiles/reborn.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

Seems like /home/isaac/clones/minecraft-pi-reborn/libreborn/src/reborn.c is rebel

Ok, deleted

#ifndef __arm__
#error "Patching Code Is ARM Only"
#endif // #ifndef __arm__

this lines to omit arm error... but 6 errors remaining

When I open file:

// BL Instruction Magic Number
#define BL_INSTRUCTION 0xeb
#define B_INSTRUCTION 0xea

// Generate A BL Instruction
static uint32_t generate_bl_instruction(void *from, void *to, int use_b_instruction) {
    uint32_t instruction;
    unsigned char *instruction_array = (unsigned char *) &instruction;

    instruction_array[3] = use_b_instruction ? B_INSTRUCTION : BL_INSTRUCTION;

    unsigned char *pc = ((unsigned char *) from) + 8;
    int32_t offset = (int32_t) to - (int32_t) pc;
    int32_t target = offset >> 2;

    unsigned char *target_array = (unsigned char *) &target;
    instruction_array[0] = target_array[0];
    instruction_array[1] = target_array[1];
    instruction_array[2] = target_array[2];

    return instruction;
}

// Run For Every .text Section
struct overwrite_data {
    const char *file;
    int line;
    void *target;
    void *replacement;
    int found;
};
static void overwrite_calls_callback(ElfW(Addr) section_addr, ElfW(Word) size, void *data) {
    struct overwrite_data *args = (struct overwrite_data *) data;
    void *section = (void *) section_addr;

    for (uint32_t i = 0; i < size; i = i + 4) {
        unsigned char *addr = ((unsigned char *) section) + i;
        int use_b_instruction = addr[3] == B_INSTRUCTION;
        // Check If Instruction is B Or BL
        if (addr[3] == BL_INSTRUCTION || use_b_instruction) {
            uint32_t check_instruction = generate_bl_instruction(addr, args->target, use_b_instruction);
            unsigned char *check_instruction_array = (unsigned char *) &check_instruction;
            // Check If Instruction Calls Target
            if (addr[0] == check_instruction_array[0] && addr[1] == check_instruction_array[1] && addr[2] == check_instruction_array[2]) {
                // Patch Instruction
                uint32_t new_instruction = generate_bl_instruction(addr, args->replacement, use_b_instruction);
                _patch(args->file, args->line, addr, (unsigned char *) &new_instruction);
                args->found++;
            }
        }
    }
}

// Limit To 512 overwrite_calls() Uses
#define CODE_BLOCK_SIZE 4096
static unsigned char *code_block = NULL;
#define CODE_SIZE 8
static int code_block_remaining = CODE_BLOCK_SIZE;

static void update_code_block(void *target) {
    // BL Instructions Can Only Access A Limited Portion of Memory, So This Allocates Memory Closer To The Original Instruction, That When Run, Will Jump Into The Actual Target
    if (code_block == NULL) {
        code_block = mmap((void *) 0x200000, CODE_BLOCK_SIZE, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
        if (code_block == MAP_FAILED) {
            ERR("Unable To Allocate Code Block: %s", strerror(errno));
        }
#ifdef DEBUG
        INFO("Code Block Allocated At: 0x%08x", (uint32_t) code_block);
#endif
    }
    if (code_block_remaining < CODE_SIZE) {
        ERR("%s", "Maximum Amount Of overwrite_calls() Uses Reached");
    }
    _overwrite(NULL, -1, code_block, target);
}
static void increment_code_block() {
    code_block = code_block + CODE_SIZE;
    code_block_remaining = code_block_remaining - CODE_SIZE;
}

// Overwrite Specific BL Instruction
void _overwrite_call(const char *file, int line, void *start, void *target) {
    // Add New Target To Code Block
    update_code_block(target);

    uint32_t new_instruction = generate_bl_instruction(start, code_block, 0);
    _patch(file, line, start, (unsigned char *) &new_instruction);

    // Increment Code Block Position
    increment_code_block();
}

// Overwrite Function Calls
void _overwrite_calls(const char *file, int line, void *start, void *target) {
    // Add New Target To Code Block
    update_code_block(target);

    struct overwrite_data data;
    data.file = file;
    data.line = line;
    data.target = start;
    data.replacement = code_block;
    data.found = 0;

    iterate_text_sections(overwrite_calls_callback, &data);

    // Increment Code Block Position
    increment_code_block();

    // Check
    if (data.found < 1) {
        ERR("(%s:%i) Unable To Find Callsites For 0x%08x", file, line, (uint32_t) start);
    }
}

// Overwrite Function
// NOTE: "start" Must Be At Least 8 Bytes Long
void _overwrite(const char *file, int line, void *start, void *target) {
    unsigned char patch_data[4] = {0x04, 0xf0, 0x1f, 0xe5}; // "ldr pc, [pc, #-0x4]"

    _patch(file, line, start, patch_data);
    _patch_address(file, line, (void *) (((unsigned char *) start) + 4), target);
}

// Print Patch Debug Data
#ifdef DEBUG
#define PATCH_PRINTF(file, line, start, str) if (file != NULL) fprintf(stderr, "[PATCH]: (%s:%i) Patching (0x%08x) - "str": 0x%02x 0x%02x 0x%02x 0x%02x\n", file, line, (uint32_t) start, data[0], data[1], data[2], data[3]);
#else
#define PATCH_PRINTF(file, line, start, str) { (void) file; (void) line; (void) start; (void) str; } // Mark As Used
#endif

// Patch Instruction
void _patch(const char *file, int line, void *start, unsigned char patch[4]) {
    if (((uint32_t) start) % 4 != 0) {
        ERR("%s", "Invalid Address");
    }

    size_t page_size = sysconf(_SC_PAGESIZE);
    uintptr_t end = ((uintptr_t) start) + 4;
    uintptr_t page_start = ((uintptr_t) start) & -page_size;
    // Allow Writing To Code Memory
    mprotect((void *) page_start, end - page_start, PROT_READ | PROT_WRITE | PROT_EXEC); // PROT_EXEC Is Needed Because Other Code In The Page May Be Being Executed

    unsigned char *data = (unsigned char *) start;

    PATCH_PRINTF(file, line, start, "original");

    memcpy(data, patch, 4);

    PATCH_PRINTF(file, line, start, "result");

    // Reset Code Memory Permissions
    mprotect((void *) page_start, end - page_start, PROT_READ | PROT_EXEC);

    // Clear ARM Instruction Cache
    __clear_cache(start, (void *) end);
}

// Patch Address
void _patch_address(const char *file, int line, void *start, void *target) {
    uint32_t addr = (uint32_t) target;
    unsigned char *patch_data = (unsigned char *) &addr;
    _patch(file, line, start, patch_data);
}

YES, I dont understand, just a bit BIT And I want to ask to people who knows C to answer to my question:

Can minecraft-pi-reborn/libreborn/src/reborn.c be modified to NOT return errors? I mean to make it compile to allllllll architectures, not only x86_64

Tnks :D

NoozAbooz commented 3 years ago

Probably best to not compile it yourself, precompiled debs already exist for amd64, armhf, and arm64

https://jenkins.thebrokenrail.com/job/minecraft-pi-reborn/job/master/111/artifact/out/minecraft-pi-reborn-client_2.2.2_amd64.deb https://jenkins.thebrokenrail.com/blue/organizations/jenkins/minecraft-pi-reborn/detail/master/111/artifacts

IsaacMvmv commented 3 years ago

But how did they to compile? I want to knowww

IsaacMvmv commented 3 years ago

hmm, seems like amd64 version isnt fully independent:


[INFO]: Configuring Game...
[INFO]: Starting Game...
qemu-arm-static: Could not open '/lib/ld-linux-armhf.so.3': No such file or directory