**Use case**
We want to use self-extracting compressor utility during build, which can be cross-compiled.
Currently self-extracting compressor utility includes appended decompressor binary, which is a base for building self-extracting executable. The problem arise from the fact that self-extracting executable usually required to be built during clickhouse build - which can be cross-compiled - so in such case additional compressor in native architecture should be built and then this compressor should compress target binaries and attach to target decompressor built in the target architecture.

**Describe the solution you'd like**
Provide --decompressor parameter so proper decompressor binary can be chosen.

**Additional context**
ref #34755

{
    memset(command, '\0', 3 + strlen(argv[0]) + 14 + strlen(argv[0]) + 4 + strlen(argv[0]) + length + argc);
    
    size_t shift = 0;
    
    char mv[] = "mv ";
    char decompressed[] = ".decompressed ";
    char add_command[] = " && ";
    char space[] = " ";
    fill(command, mv, 3, shift);
    fill(command, argv[0], strlen(argv[0]), shift);
    fill(command, decompressed, 14, shift);
    fill(command, argv[0], strlen(argv[0]), shift);
    fill(command, add_command, 4, shift);
    fill(command, argv[0], strlen(argv[0]), shift);
    fill(command, space, 1, shift);
    
    for (int i = 1; i < argc; ++i)
    {
        fill(command, argv[i], strlen(argv[i]), shift);
        if (i != argc - 1)
            fill(command, space, 1, shift);
    }
}
int main(int argc, char* argv[])
{
    char file_path[strlen(argv[0]) + 1];
    memset(file_path, 0, sizeof(file_path));
    strcpy(file_path, argv[0]);
    char * path = nullptr;