def compile(sources, flags):
    args = ''
    compiler = 'gcc'
    args += ''
    if isinstance(sources, (str, bytes)):
        args += sources
    elif isinstance(sources, (list, tuple)):
        args += ' '.join(sources)
    args += ' '
    if isinstance(flags, (str, bytes)):
        args += flags
    elif isinstance(flags, (list, tuple)):
        args += ' '.join(flags)
    cmd = f'{compiler} {args}'
    proc = run(cmd, shell=True, stderr=STDOUT)
    if (proc.returncode != 0):
        raise CompilationError(proc.returncode, proc.stdout)
def compile(sources, flags):
    args = 
    compiler = 'gcc'
    args += 
    if isinstance(sources, (str, bytes)):
        args += sources
    elif isinstance(sources, (list, tuple)):
        args += ' '.join(sources)
    args += ' '
    if isinstance(flags, (str, bytes)):
        args += flags
    elif isinstance(flags, (list, tuple)):
        args += ' '.join(flags)
    cmd = f'{compiler} {args}'
    proc = run(cmd, shell=True, stderr=STDOUT)
    if (proc.returncode != 0):
        raise CompilationError(proc.returncode, proc.stdout)