Bagaimanakah saya boleh memaut ke perpustakaan tersuai semasa membina pelayan MySQL daripada sumber?
P粉087951442
P粉087951442 2024-04-01 14:30:27
0
1
405

Saya memasang pelayan MySQL menggunakan pengedaran sumber standard (mysql-server-8.0) mengikut: https://dev.mysql.com/doc/refman/8.0/en/installing-source-distribution.html. Untuk tujuan tertentu, saya berada di perpustakaan mysql-server-8.0/sql/mysqld.cc中的MySQL源代码中添加了一些代码,并且我添加的代码使用了/usr/lib中的自定义.so.

Saya mahu memaut ke perpustakaan ini semasa membina kod sumber MySQL, jadi apabila saya membina MySQL saya menggunakan arahan berikut:

cmake .. -DWITH_BOOST=/home/ubuntu/mysql-server-8.0/boost \
         -DCMAKE_C_FLAGS="-lmy_lib_name -L/usr/lib" \
         -DCMAKE_CXX_FLAGS="-lmy_lib_name -L/usr/lib" \
         -DCMAKE_C_LINK_FLAGS="-lmy_lib_name -L/usr/lib" \
         -DCMAKE_CXX_LINK_FLAGS="-lmy_lib_name -L/usr/lib" \
         -DCONFIG_CLIENT_LIBS="-lmy_lib_name -L/usr/lib" \
         -DCONFIG_LIBS_PRIVATE="-lmy_lib_name -L/usr/lib" \
         -DCMAKE_EXE_LINKER_FLAGS="-lmy_lib_name -L/usr/lib" \
         -DCMAKE_MODULE_LINKER_FLAGS="-lmy_lib_name -L/usr/lib" \
         -DCMAKE_SHARED_LINKER_FLAGS="-lmy_lib_name -L/usr/lib" \
make

Walaupun saya cuba menambah bendera semasa menyusun dan memaut, binaan gagal disiapkan, lapor error: undefined reference to 'symbols in my library' . Adakah terdapat cara untuk menjadikannya berfungsi? Terima kasih!

P粉087951442
P粉087951442

membalas semua(1)
P粉976737101

Terima kasih atas komen anda! Saya mendapati bahawa dalam fail .cc源文件中没有正确使用C。应该注意的是,在 .cc saya, penggunaan fail pengepala C sepatutnya kelihatan seperti ini:

extern "C" {
  #include "mylib.h"
}

Jadi proses pemautan berfungsi dengan baik. Pengkompil tidak mengenali tandatangan fungsi kerana saya menyalahgunakan pengepala perpustakaan dalam fail .cc.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan