While objcopy can do many things, it can't undo the work of the linker. If relocations aren't unapplied and a new relocation table generated, these spots inside the new object file will reference the original program's address space, leading to some exotic undefined behavior.
Delinking is a subject with very few resources online, but there are a couple of other tools for it out there:
https://sourceware.org/binutils/docs/binutils/objcopy.html