Compile files based on bdf on macOS
Peng Yu
pengyu.ut@gmail.com
Thu Apr 29 02:14:40 GMT 2021
I have binutils installed on macOS. When I try to compile the
following main.c program, I got the following link error. But the
program can be compiled correctly on Linux. Are there any additional
library files that I need to link to on macOS?
$ brew info binutils
binutils: stable 2.36.1 (bottled) [keg-only]
GNU binary tools for native development
https://www.gnu.org/software/binutils/binutils.html
/usr/local/Cellar/binutils/2.36.1 (83 files, 158.3MB)
Poured from bottle on 2021-03-09 at 09:43:10
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/binutils.rb
License: GPL-2.0-or-later and GPL-3.0-or-later and LGPL-2.0-or-later
and LGPL-3.0-only
==> Caveats
binutils is keg-only, which means it was not symlinked into /usr/local,
because Apple's CLT provides the same tools.
If you need to have binutils first in your PATH, run:
echo 'export PATH="/usr/local/opt/binutils/bin:$PATH"' >>
/Users/pengy/.bash_profile
For compilers to find binutils you may need to set:
export LDFLAGS="-L/usr/local/opt/binutils/lib"
export CPPFLAGS="-I/usr/local/opt/binutils/include"
==> Analytics
install: 4,252 (30 days), 19,393 (90 days), 67,613 (365 days)
install-on-request: 3,756 (30 days), 17,394 (90 days), 59,111 (365 days)
build-error: 0 (30 days)
$ cat main.c
#define PACKAGE 1
#define PACKAGE_VERSION 1
#include <bfd.h>
int main(int argc, char *argv[]) {
bfd_init();
bfd *file = bfd_openr(argv[1], 0);
bfd_close(file);
}
$ clang -Wall -I/usr/local/opt/binutils/include
-L/usr/local/opt/binutils/lib -o main.exe main.c -lbfd
Undefined symbols for architecture x86_64:
"__hex_value", referenced from:
_ihex_object_p in libbfd.a(ihex.o)
_ihex_get_section_contents in libbfd.a(ihex.o)
_srec_object_p in libbfd.a(srec.o)
_srec_get_section_contents in libbfd.a(srec.o)
_srec_scan in libbfd.a(srec.o)
_tekhex_object_p in libbfd.a(tekhex.o)
_getvalue in libbfd.a(tekhex.o)
...
"__objalloc_alloc", referenced from:
_bfd_alloc in libbfd.a(opncls.o)
_bfd_hash_table_init_n in libbfd.a(hash.o)
_bfd_hash_lookup in libbfd.a(hash.o)
_bfd_hash_insert in libbfd.a(hash.o)
_bfd_hash_allocate in libbfd.a(hash.o)
_elf32_aarch64_get_local_sym_hash in libbfd.a(elf32-aarch64.o)
_elf64_aarch64_get_local_sym_hash in libbfd.a(elf64-aarch64.o)
...
"__sch_istable", referenced from:
_error_handler_internal in libbfd.a(bfd.o)
_bfd_default_scan in libbfd.a(archures.o)
__bfd_vms_lib_get_imagelib_file in libbfd.a(vms-lib.o)
_bfd_is_section_compressed_with_header in libbfd.a(compress.o)
_mangle_name in libbfd.a(binary.o)
_cris_aout_32_final_link in libbfd.a(aout-cris.o)
_som_set_reloc_info in libbfd.a(som.o)
...
"__sch_tolower", referenced from:
__bfd_vms_lib_get_imagelib_file in libbfd.a(vms-lib.o)
"__sch_toupper", referenced from:
_som_get_symbol_info in libbfd.a(som.o)
_bfd_decode_symclass in libbfd.a(syms.o)
_vms_get_module_name in libbfd.a(vms-misc.o)
"_compress", referenced from:
_bfd_compress_section_contents in libbfd.a(compress.o)
(maybe you meant: __bfd_pex64_print_ce_compressed_pdata,
__bfd_pep_print_ce_compressed_pdata ,
_bfd_init_section_compress_status , _bfd_is_section_compressed ,
_bfd_is_section_compressed_with_header , _bfd_compress_section ,
_bfd_update_compression_header , _bfd_get_compression_header_size ,
__bfd_pe_print_ce_compressed_pdata , _bfd_check_compression_header )
"_compressBound", referenced from:
_bfd_compress_section_contents in libbfd.a(compress.o)
"_concat", referenced from:
_arc_elf_merge_private_bfd_data in libbfd.a(elf32-arc.o)
_allocate_global_data_opd in libbfd.a(elf64-hppa.o)
_elf64_hppa_finalize_opd in libbfd.a(elf64-hppa.o)
_bfd_plugin_object_p in libbfd.a(plugin.o)
_mips_elf_check_symbols in libbfd.a(elfxx-mips.o)
_mips_elf_create_stub_symbol in libbfd.a(elfxx-mips.o)
_m68hc11_elf_export_one_stub in libbfd.a(elf32-m68hc1x.o)
...
"_cplus_demangle", referenced from:
_bfd_demangle in libbfd.a(bfd.o)
"_filename_cmp", referenced from:
_bfinfdpic_relocate_section in libbfd.a(elf32-bfin.o)
_elf32_frv_relocate_section in libbfd.a(elf32-frv.o)
_spu_elf_final_link in libbfd.a(elf32-spu.o)
_sort_bfds in libbfd.a(elf32-spu.o)
__bfd_get_elt_at_filepos in libbfd.a(archive.o)
__bfd_construct_extended_name_table in libbfd.a(archive.o)
__bfd_stab_section_find_nearest_line in libbfd.a(syms.o)
...
"_filename_ncmp", referenced from:
__bfd_construct_extended_name_table in libbfd.a(archive.o)
_adjust_relative_path in libbfd.a(archive.o)
__bfd_stab_section_find_nearest_line in libbfd.a(syms.o)
"_getpwd", referenced from:
_adjust_relative_path in libbfd.a(archive.o)
"_hex_init", referenced from:
_ihex_object_p in libbfd.a(ihex.o)
_srec_object_p in libbfd.a(srec.o)
_srec_mkobject in libbfd.a(srec.o)
_symbolsrec_object_p in libbfd.a(srec.o)
_tekhex_init in libbfd.a(tekhex.o)
_verilog_mkobject in libbfd.a(verilog.o)
"_htab_clear_slot", referenced from:
__bfinfdpic_resolve_final_relocs_info in libbfd.a(elf32-bfin.o)
__frvfdpic_resolve_final_relocs_info in libbfd.a(elf32-frv.o)
_score_elf_resolve_final_got_entry in libbfd.a(elf32-score.o)
__bfd_unlink_from_archive_parent in libbfd.a(archive.o)
_score_elf_resolve_final_got_entry in libbfd.a(elf32-score7.o)
"_htab_create", referenced from:
_riscv_elf_relocate_section in libbfd.a(elf32-riscv.o)
_riscv_elf_relocate_section in libbfd.a(elf64-riscv.o)
_mips_elf_resolve_final_got_entries in libbfd.a(elfxx-mips.o)
__bfd_xcoff_bfd_link_hash_table_create in libbfd.a(xcofflink.o)
"_htab_create_alloc", referenced from:
__bfd_add_bfd_to_archive_cache in libbfd.a(archive.o)
__bfd_dwarf2_slurp_debug_info in libbfd.a(dwarf2.o)
__bfd_dwarf2_find_symbol_bias in libbfd.a(dwarf2.o)
"_htab_delete", referenced from:
_elf32_aarch64_link_hash_table_free in libbfd.a(elf32-aarch64.o)
_elf64_aarch64_link_hash_table_free in libbfd.a(elf64-aarch64.o)
_elf32_ia64_link_hash_table_free in libbfd.a(elf32-ia64.o)
_elf64_ia64_link_hash_table_free in libbfd.a(elf64-ia64.o)
_elf64_ia64_link_hash_table_free in libbfd.a(elf64-ia64-vms.o)
_elf_m68k_link_hash_table_free in libbfd.a(elf32-m68k.o)
_elf_m68k_bfd2got_entry_del in libbfd.a(elf32-m68k.o)
...
"_htab_elements", referenced from:
_mips_elf_check_symbols in libbfd.a(elfxx-mips.o)
"_htab_find", referenced from:
__bfinfdpic_resolve_final_relocs_info in libbfd.a(elf32-bfin.o)
__frvfdpic_resolve_final_relocs_info in libbfd.a(elf32-frv.o)
_riscv_elf_relocate_section in libbfd.a(elf32-riscv.o)
_riscv_elf_relocate_section in libbfd.a(elf64-riscv.o)
_s3_bfd_score_elf_hide_symbol in libbfd.a(elf32-score.o)
_score_elf_resolve_final_got_entry in libbfd.a(elf32-score.o)
__bfd_look_for_bfd_in_cache in libbfd.a(archive.o)
...
"_htab_find_slot", referenced from:
_bfinfdpic_relocs_info_find in libbfd.a(elf32-bfin.o)
__bfinfdpic_resolve_final_relocs_info in libbfd.a(elf32-bfin.o)
_frvfdpic_relocs_info_find in libbfd.a(elf32-frv.o)
__frvfdpic_resolve_final_relocs_info in libbfd.a(elf32-frv.o)
_elf_m68k_get_bfd2got_entry in libbfd.a(elf32-m68k.o)
_elf_m68k_get_got_entry in libbfd.a(elf32-m68k.o)
_riscv_record_pcrel_hi_reloc in libbfd.a(elf32-riscv.o)
...
"_htab_find_slot_with_hash", referenced from:
_elf32_aarch64_get_local_sym_hash in libbfd.a(elf32-aarch64.o)
_elf64_aarch64_get_local_sym_hash in libbfd.a(elf64-aarch64.o)
_get_local_sym_hash in libbfd.a(elf32-ia64.o)
_get_local_sym_hash in libbfd.a(elf64-ia64.o)
_get_local_sym_hash in libbfd.a(elf64-ia64-vms.o)
_tocsave_find in libbfd.a(elf64-ppc.o)
_riscv_elf_get_local_sym_hash in libbfd.a(elf32-riscv.o)
...
"_htab_hash_pointer", referenced from:
_hash_abbrev in libbfd.a(dwarf2.o)
_xcoff_archive_info_hash in libbfd.a(xcofflink.o)
"_htab_hash_string", referenced from:
_hash_asymbol in libbfd.a(dwarf2.o)
"_htab_size", referenced from:
_mips_elf_resolve_final_got_entries in libbfd.a(elfxx-mips.o)
"_htab_traverse", referenced from:
_elf32_aarch64_size_dynamic_sections in libbfd.a(elf32-aarch64.o)
_elf32_aarch64_finish_dynamic_sections in libbfd.a(elf32-aarch64.o)
_elf64_aarch64_size_dynamic_sections in libbfd.a(elf64-aarch64.o)
_elf64_aarch64_finish_dynamic_sections in libbfd.a(elf64-aarch64.o)
_elf32_bfinfdpic_size_dynamic_sections in libbfd.a(elf32-bfin.o)
_bfinfdpic_elf_discard_info in libbfd.a(elf32-bfin.o)
__bfinfdpic_size_got_plt in libbfd.a(elf32-bfin.o)
...
"_htab_traverse_noresize", referenced from:
_elf_m68k_partition_multi_got_1 in libbfd.a(elf32-m68k.o)
__bfd_archive_close_and_cleanup in libbfd.a(archive.o)
"_htab_try_create", referenced from:
_elf32_aarch64_link_hash_table_create in libbfd.a(elf32-aarch64.o)
_elf64_aarch64_link_hash_table_create in libbfd.a(elf64-aarch64.o)
__bfin_create_got_section in libbfd.a(elf32-bfin.o)
__frv_create_got_section in libbfd.a(elf32-frv.o)
_elf32_ia64_hash_table_create in libbfd.a(elf32-ia64.o)
_elf64_ia64_hash_table_create in libbfd.a(elf64-ia64.o)
_elf64_ia64_hash_table_create in libbfd.a(elf64-ia64-vms.o)
...
"_inflate", referenced from:
_decompress_contents in libbfd.a(compress.o)
"_inflateEnd", referenced from:
_decompress_contents in libbfd.a(compress.o)
"_inflateInit_", referenced from:
_decompress_contents in libbfd.a(compress.o)
"_inflateReset", referenced from:
_decompress_contents in libbfd.a(compress.o)
"_iterative_hash", referenced from:
__bfd_elf_discard_section_eh_frame in libbfd.a(elf-eh-frame.o)
"_lbasename", referenced from:
_bfd_create_gnu_debuglink_section in libbfd.a(opncls.o)
_bfd_fill_in_gnu_debuglink_section in libbfd.a(opncls.o)
_bfd_mach_o_find_nearest_line in libbfd.a(mach-o.o)
__bfd_append_relative_path in libbfd.a(archive.o)
__bfd_construct_extended_name_table in libbfd.a(archive.o)
__bfd_archive_bsd44_construct_extended_name_table in libbfd.a(archive.o)
__bfd_bsd44_write_ar_hdr in libbfd.a(archive.o)
...
"_lrealpath", referenced from:
_find_separate_debug_file in libbfd.a(opncls.o)
_adjust_relative_path in libbfd.a(archive.o)
"_make_relative_prefix", referenced from:
_bfd_plugin_object_p in libbfd.a(plugin.o)
"_objalloc_create", referenced from:
__bfd_new_bfd in libbfd.a(opncls.o)
_bfd_hash_table_init_n in libbfd.a(hash.o)
_elf32_aarch64_link_hash_table_create in libbfd.a(elf32-aarch64.o)
_elf64_aarch64_link_hash_table_create in libbfd.a(elf64-aarch64.o)
_elf32_ia64_hash_table_create in libbfd.a(elf32-ia64.o)
_elf64_ia64_hash_table_create in libbfd.a(elf64-ia64.o)
_elf64_ia64_hash_table_create in libbfd.a(elf64-ia64-vms.o)
...
"_objalloc_free", referenced from:
__bfd_new_bfd in libbfd.a(opncls.o)
__bfd_free_cached_info in libbfd.a(opncls.o)
__bfd_delete_bfd in libbfd.a(opncls.o)
_bfd_hash_table_init_n in libbfd.a(hash.o)
_bfd_hash_table_free in libbfd.a(hash.o)
__bfd_stringtab_free in libbfd.a(hash.o)
_elf32_aarch64_link_hash_table_free in libbfd.a(elf32-aarch64.o)
...
"_objalloc_free_block", referenced from:
_bfd_release in libbfd.a(opncls.o)
_elf_link_add_object_symbols in libbfd.a(elflink.o)
"_splay_tree_foreach", referenced from:
_elf_xtensa_relax_section in libbfd.a(elf32-xtensa.o)
_check_section_ebb_pcrels_fit in libbfd.a(elf32-xtensa.o)
_removed_by_actions_map in libbfd.a(elf32-xtensa.o)
"_splay_tree_insert", referenced from:
_elf_xtensa_relax_section in libbfd.a(elf32-xtensa.o)
_text_action_add in libbfd.a(elf32-xtensa.o)
"_splay_tree_lookup", referenced from:
_elf_xtensa_relax_section in libbfd.a(elf32-xtensa.o)
_text_action_add in libbfd.a(elf32-xtensa.o)
_offset_with_removed_text in libbfd.a(elf32-xtensa.o)
"_splay_tree_min", referenced from:
_elf_xtensa_relax_section in libbfd.a(elf32-xtensa.o)
_offset_with_removed_text in libbfd.a(elf32-xtensa.o)
"_splay_tree_new", referenced from:
_elf_xtensa_relax_section in libbfd.a(elf32-xtensa.o)
"_splay_tree_successor", referenced from:
_elf_xtensa_relax_section in libbfd.a(elf32-xtensa.o)
_offset_with_removed_text in libbfd.a(elf32-xtensa.o)
"_unlink_if_ordinary", referenced from:
_bfd_open_file in libbfd.a(cache.o)
"_xcalloc", referenced from:
__bfd_dwarf2_find_symbol_bias in libbfd.a(dwarf2.o)
"_xexit", referenced from:
_elf32_arm_get_stub_entry in libbfd.a(elf32-arm.o)
_spu_elf_final_link in libbfd.a(elf32-spu.o)
"_xmalloc", referenced from:
_new_got_entry_to_list in libbfd.a(elf32-arc.o)
_elf32_arm_fix_exidx_coverage in libbfd.a(elf32-arm.o)
_insert_cantunwind_after in libbfd.a(elf32-arm.o)
_elf32_tic6x_fix_exidx_coverage in libbfd.a(elf32-tic6x.o)
_elf32_tic6x_insert_cantunwind_after in libbfd.a(elf32-tic6x.o)
_pex64_bfd_print_pdata_section in libbfd.a(pei-x86_64.o)
_riscv_add_subset in libbfd.a(elfxx-riscv.o)
...
"_xrealloc", referenced from:
_som_write_object_contents in libbfd.a(som.o)
_som_begin_writing in libbfd.a(som.o)
"_xstrdup", referenced from:
_riscv_add_subset in libbfd.a(elfxx-riscv.o)
_riscv_parse_subset in libbfd.a(elfxx-riscv.o)
_riscv_parse_add_subset in libbfd.a(elfxx-riscv.o)
"_xstrerror", referenced from:
_bfd_errmsg in libbfd.a(bfd.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
--
Regards,
Peng
More information about the Binutils
mailing list