Print in MLIR

When I followed the same method for the following code :
func @main()
{
%c1= constant 0.500:f32
%A = alloc() : memref<1xf32>
%b = exp %c1 : f32
affine.store %b, %A[0] : memref<1xf32>

%U = memref_cast %A: memref<1xf32> to memref<*xf32>
call @print_memref_f32(%U): (memref<*xf32>) → ()
return
}
func @print_memref_f32(memref<*xf32>)
I lower these code to LLVM dialect using :mlir-opt --lower-affine --convert-scf-to-std -convert-std-to-llvm
then I lowered to LLVM IR using mlir-translate -mlir-to-llvmir

When I run the .ll file using
clang exllvmir.ll <path_to_build_dir>/lib/libmlir_runner_utils.so -o main

I am getting error like this:
/usr/bin/ld: /tmp/n3-b2760a.o: undefined reference to symbol ‘expf@@GLIBC_2.27
/usr/bin/ld: /lib/x86_64-linux-gnu/libm.so.6: error adding symbols: DSO missing from command line
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Thank You